【问题标题】:Google Apps Script return date between a range of dates in an arrayGoogle Apps 脚本返回数组中一系列日期之间的日期
【发布时间】:2022-01-14 00:04:26
【问题描述】:

我有一个日期数组。我想返回 2022 年 1 月 1 日到 2022 年 12 月 31 日之间的日期。

当我运行下面的剪辑时,它不会返回任何内容。这是我尝试过的许多不同的循环变体之一。请帮助TIA

var start = new Date(2022, 0, 01); //returns Sat Jan 01 00:00:00 GMT-06:00 2022
var end = new Date(2022, 11, 01); //returns Sat Dec 31 00:00:00 GMT-06:00 2022
var arr = [Fri Dec 03 2021 00:00:00 GMT-0600 (Central Standard Time), 
           Fri Dec 10 2021 00:00:00 GMT-0600 (Central Standard Time), 
           Fri Dec 17 2021 00:00:00 GMT-0600 (Central Standard Time), 
           Fri Dec 24 2021 00:00:00 GMT-0600 (Central Standard Time), 
           Fri Dec 31 2021 00:00:00 GMT-0600 (Central Standard Time), 
           Fri Jan 07 2022 00:00:00 GMT-0600 (Central Standard Time), 
           Fri Jan 14 2022 00:00:00 GMT-0600 (Central Standard Time), 
           Fri Jan 21 2022 00:00:00 GMT-0600 (Central Standard Time), 
           Fri Jan 28 2022 00:00:00 GMT-0600 (Central Standard Time),
           ...](**output** NOT the actual script)
for(var i=0; i<=arr.length; i++){
   if(arr[i] >= start && arr[i] <= end){
      Logger.log(arr[i]);
   }
}

【问题讨论】:

    标签: javascript arrays for-loop google-apps-script while-loop


    【解决方案1】:

    修改点:

    • 从您的脚本中,我无法理解arr 的值。因为在你的脚本中,当你保存脚本时,会发生错误。所以我担心您的实际脚本与您的演示脚本不同。如果arr的每个值都是Fri Dec 03 2021 00:00:00 GMT-0600 (Central Standard Time)这样的字符串类型,请用双引号或单引号括起来。
      • 如果我对您的脚本的猜测不正确,请提供您的实际脚本。
    • 为了比较日期,我认为这个线程会很有用。 Ref

    当这些点反映在你的脚本中时,它变成如下。

    修改脚本:

    var start = new Date(2022, 0, 01); //returns Sat Jan 01 00:00:00 GMT-06:00 2022
    var end = new Date(2022, 11, 01); //returns Sat Dec 31 00:00:00 GMT-06:00 2022
    var arr = [
      "Fri Dec 03 2021 00:00:00 GMT-0600 (Central Standard Time)",
      "Fri Dec 10 2021 00:00:00 GMT-0600 (Central Standard Time)",
      "Fri Dec 17 2021 00:00:00 GMT-0600 (Central Standard Time)",
      "Fri Dec 24 2021 00:00:00 GMT-0600 (Central Standard Time)",
      "Fri Dec 31 2021 00:00:00 GMT-0600 (Central Standard Time)",
      "Fri Jan 07 2022 00:00:00 GMT-0600 (Central Standard Time)",
      "Fri Jan 14 2022 00:00:00 GMT-0600 (Central Standard Time)",
      "Fri Jan 21 2022 00:00:00 GMT-0600 (Central Standard Time)",
      "Fri Jan 28 2022 00:00:00 GMT-0600 (Central Standard Time)",
    ];
    for (var i = 0; i <= arr.length; i++) {
      if (new Date(arr[i]).getTime() >= start.getTime() && new Date(arr[i]).getTime() <= end.getTime()) {
        console.log(arr[i]);
      }
    }

    参考资料:

    【讨论】:

      【解决方案2】:

      Tanaike 提到的是正确的,它应该是你的数组中的一个字符串并且缺少引号然后你可以这样做

      arr.filter(dates => new Date(dates) >= start && new Date(dates) <= end );
      

      【讨论】:

        【解决方案3】:

        感谢您的输入,我能够弄清楚。问题是我需要将 arr[i] 设置为 new Date(arr[i])。以下是更新后的代码。

        var start = new Date(2022, 0, 01); //returns Sat Jan 01 00:00:00 GMT-06:00 2022
        var end = new Date(2022, 11, 01); //returns Sat Dec 31 00:00:00 GMT-06:00 2022
        var arr = [Fri Dec 03 2021 00:00:00 GMT-0600 (Central Standard Time), 
                   Fri Dec 10 2021 00:00:00 GMT-0600 (Central Standard Time), 
                   Fri Dec 17 2021 00:00:00 GMT-0600 (Central Standard Time), 
                   Fri Dec 24 2021 00:00:00 GMT-0600 (Central Standard Time), 
                   Fri Dec 31 2021 00:00:00 GMT-0600 (Central Standard Time), 
                   Fri Jan 07 2022 00:00:00 GMT-0600 (Central Standard Time), 
                   Fri Jan 14 2022 00:00:00 GMT-0600 (Central Standard Time), 
                   Fri Jan 21 2022 00:00:00 GMT-0600 (Central Standard Time), 
                   Fri Jan 28 2022 00:00:00 GMT-0600 (Central Standard Time),
                   ...](**output of the array** NOT the actual script)
        for(var i=0; i<=arr.length; i++){
           var arrI = new Date(arr[i]);
           if(arrI >= start && arrI <= end){
              Logger.log(arrI);
           }
        }
        

        【讨论】:

          猜你喜欢
          • 2015-06-03
          • 1970-01-01
          • 2020-12-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-04-19
          相关资源
          最近更新 更多