Google Apps Script日期季节判断问题:日期范围判断失效
问题分析与解决方案
你的代码逻辑错误出在字符串比较的逻辑关系和日期区间的划分上:
字符串比较问题:将日期转为
MM/dd格式的字符串后,比较是按字符顺序执行的。比如'01/13'(1月13日)和'12/21'(12月21日)对比时,'0'的ASCII码小于'1',所以'01/13' < '12/21',这导致你原代码中“大于'12/21'且小于'3/20'”的条件永远无法成立——没有日期能同时满足这两个要求。冬季区间划分:冬季是跨年份的,需拆为两个独立区间:
- 当年12月21日至12月31日
- 次年1月1日至3月20日
修正后的代码
var myDate = myForm.getRange("C4").getValue(); var formattedDate = Utilities.formatDate(myDate, "GMT", 'MM/dd'); // 冬季判断:12/21 - 12/31 或者 01/01 - 03/20 if ((formattedDate >= '12/21') || (formattedDate <= '03/20')) { ui.alert("Winter"); }
额外优化建议
- 避免重复调用
Utilities.formatDate,将格式化后的日期存入变量复用,提升代码效率。 - 如果你的实际时区不是GMT,记得把
"GMT"替换为对应时区(比如"Asia/Shanghai"),避免日期转换出现偏差。
内容的提问来源于stack exchange,提问作者Mike M
相关产品推荐
相关产品推荐

