Google Sheets脚本日期加1天无效问题求助
问题排查与解决方案
你的代码问题出在Date对象与数字直接相加的隐式类型转换上:当执行deliveryDate + 1000*60*60*24时,JavaScript会自动将deliveryDate这个Date对象转为字符串,再和数字做拼接操作,得到类似"Wed Mar 08 2023 08:00:00 GMT+0800 (中国标准时间)86400000"的字符串。将这个字符串传给new Date()解析后,依然会回到原日期,导致“加一天”的逻辑失效。
修正方案一:通过时间戳计算
先调用getTime()获取Date对象对应的毫秒级时间戳,再加上一天的毫秒数:
Logger.log('source array - ' + sourceArray[i][8]) var deliveryDate = new Date(sourceArray[i][8]) Logger.log ('deliveryDate - ' + deliveryDate) var newDate = new Date(deliveryDate.getTime() + 1000*60*60*24) // 获取时间戳后执行相加 Logger.log ('newDate - ' + newDate)
修正方案二:使用Date对象的setDate方法(更直观)
先复制原日期对象(避免修改原deliveryDate),再调用setDate()将日期设置为当前日期加1:
Logger.log('source array - ' + sourceArray[i][8]) var deliveryDate = new Date(sourceArray[i][8]) Logger.log ('deliveryDate - ' + deliveryDate) var newDate = new Date(deliveryDate) // 复制原日期对象 newDate.setDate(newDate.getDate() + 1) // 日期加1 Logger.log ('newDate - ' + newDate)
补充说明
方案二更推荐,因为它会自动处理月末、年末的日期边界问题(比如3月31日加1天会自动转为4月1日),而直接加毫秒数的方式在夏令时切换的地区可能出现误差。
内容的提问来源于stack exchange,提问作者Michael Liew
相关产品推荐
相关产品推荐

