google-apps-script - Google Apps 脚本在 2021 年 12 月 25 日之后没有正确递增日期
问题描述
这是我在这里的第一篇文章,如果我做错了,请原谅我。我正在增加一年的日期,如下所示:
for (i = 0; i <= 360; i++){
bDate.setDate(bDate.getDate() + 1);
bArray.push([Utilities.formatDate(bDate, "GMT", "M/dd/YYYY")]);
}
直到 2021 年 12 月 25 日,它都可以正常工作,此时 Apps Script 决定提前几天庆祝新年!!!见下文:
[12/22/2021], [12/23/2021], [12/24/2021], [12/25/2021], [12/26/2022], [12/27/2022], [12/28/2022], [12/29/2022], [12/30/2022], [12/31/2022], [1/01/2022], [1/02/2022]
我做错了什么还是这是某种错误?
解决方案
解释:
这一定是与此问题相关的错误。
我知道这不是解决方案,但解决您的问题的解决方法是手动添加有问题的日期,然后让 for 循环继续处理其余日期。
- 另一个重要的注意事项是使用
SpreadsheetApp.getActive().getSpreadsheetTimeZone()
,因为现在您已经对时区进行了硬编码,这可能会导致错误的日期。
解决方法:
function myFunction() {
const bArray =
[[ '12/22/2021' ],
[ '12/23/2021' ],
[ '12/24/2021' ],
[ '12/25/2021' ],
[ '12/26/2021' ],
[ '12/27/2021' ],
[ '12/28/2021' ],
[ '12/29/2021' ],
[ '12/30/2021' ],
[ '12/31/2021' ]];
const bDate = new Date(2022,0,1);
for (i = 0; i <= 360 - bArray.length ; i++){
bArray.push([Utilities.formatDate(bDate, SpreadsheetApp.getActive().getSpreadsheetTimeZone(), "M/dd/YYYY")]);
bDate.setDate(bDate.getDate() + 1);
}
console.log(bArray);
}
推荐阅读
- javascript - 在 socket.emit() 中传递参数的问题
- ruby-on-rails - 如何在活动管理员中获取 form.input 的值(ruby on rails)
- jquery - 水平折叠引导列
- css - Flex没有使项目响应
- hammer.js - hammer.js,防止“tap”在“doubletap”上触发
- java - 重启按钮抛出异常,我不知道如何修复它
- kubernetes - 引导 etcd 集群 - 这意味着什么?
- android - 如何在另一个应用程序模块中使用库模块的 .aar 中的 .so 文件?
- bash - 从 awk 返回中提取数值
- linux - 从三列文件中删除重复记录