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
相关产品推荐
相关产品推荐

