You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Script如何判断时间A是否处于时间B与时间C的区间范围内

Google Apps Script时间区间判断实现方案

你当前通过getDisplayValue()获取到的是字符串类型的文本,无法直接作为时间格式做大小比较,可通过以下两种方法实现需求:

方法1:直接读取单元格原生时间值(推荐)

如果对应单元格本身设置的是时间格式(非纯文本格式),直接使用getValue()即可拿到标准Date对象,无需手动解析格式:

var A = getCurrentSheet.getRange("P30").getValue();
var B = getCurrentSheet.getRange("P31").getValue();
var C = getCurrentSheet.getRange("P32").getValue();

// 通过getTime()获取时间戳(毫秒级数值)做大小比较
if (A.getTime() >= B.getTime() && A.getTime() <= C.getTime()) {
  // 此处写时间在区间内的对应逻辑
}

方法2:手动解析时间字符串

如果单元格存储的是纯文本格式的时间,可通过自定义函数将时间字符串转换为当日总毫秒数后比较:

// 解析12小时制时间字符串为当日总毫秒数
function parseTimeToMs(timeStr) {
  const [timePart, period] = timeStr.split(' ');
  let [h, m, s] = timePart.split(':').map(Number);
  // 12小时制转24小时制
  if (period === 'PM' && h < 12) h += 12;
  if (period === 'AM' && h === 12) h = 0;
  return h * 3600000 + m * 60000 + s * 1000;
}

var A = parseTimeToMs(getCurrentSheet.getRange("P30").getDisplayValue());
var B = parseTimeToMs(getCurrentSheet.getRange("P31").getDisplayValue());
var C = parseTimeToMs(getCurrentSheet.getRange("P32").getDisplayValue());

if (A >= B && A <= C) {
  // 此处写时间在区间内的对应逻辑
}

注意事项

  • 如果时间区间存在跨零点场景(比如B为22:00,C为次日02:00),判断逻辑需调整为if (A >= B || A <= C)
  • 优先使用方法1,无需处理格式适配问题,容错率更高。

内容的提问来源于stack exchange,提问作者Tiamat616

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 10:39:04