首页 > 解决方案 > 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]

我做错了什么还是这是某种错误?

标签: google-apps-script

解决方案


解释:

这一定是与此问题相关的错误。

我知道这不是解决方案,但解决您的问题的解决方法是手动添加有问题的日期,然后让 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);
}

推荐阅读