为什么日期不同保存到变量不同

时间:2019-06-12 17:21:08

标签: google-apps-script

我将日期值存储在两个变量中,一个是单个值,另一个是数组。第一个是字符串,另一个是从Google表格获取的数组。底线是,保存到变量时,一个保存为[Tue Jul 31 00:00:00 GMT + 01:00 2018],另一个保存为[Tue Jul 31 06:00:00 GMT + 01:00 2018 ],因此当我尝试在包含第二个示例的数组中查找第一个匹配日期时,找不到匹配项。

 var cur_date = new Date('7/31/2018') 
 var date_array = 
 sales_sheet.getRange(index,9,last_row_current,1).getValues();  

我觉得解决此问题的最简单方法是将cur_date中的值强制设置为0600,但我不知道该怎么做。我们非常感谢您能使这些值相匹配。

cur_date = [2018年7月31日星期二00:00:00 GMT + 01:00] date_array = [Tue Jul 31 06:00:00 GMT + 01:00 2018](有很多值,但第一个是我希望匹配的值)

Google工作表中的第一个值为7/3/12018 ..

1 个答案:

答案 0 :(得分:0)

问题:

日期构造函数不返回日期/时间,仅返回日期。


解决方案:

通过将new Date()传递给方法Utilities.formatDate(),正确设置日期格式以进行比较。


示例:

您仅通过以下内容:

var cur_date = new Date('7/31/2018');
Logger.log(cur_date);
//returns 'Tue Jul 31 00:00:00 GMT+01:00 2018'

要获得期望的结果,还需要花一些时间:

var cur_date = new Date('7/31/2018 06:00:00');
Logger.log(cur_date);
//returns 'Tue Jul 31 06:00:00 GMT+01:00 2018'

这是预期的行为,如果您不首先将时间传递给日期构造函数,则日期构造函数将无法打印时间。

因此,要比较日期,可以在Utilities.formatDate()中使用日期构造函数,以便脚本可以成功比较两者(使用您构造的日期而不是默认的当前日期/时间),请记住您还需要将时间传递到new Date(),如果您也想比较一下。

var cur_date = Utilities.formatDate(new Date(),'GMT+1','M/dd/yyyy hh:mm:ss');

参考文献:

  1. new Date()(用于日期构造函数)。
  2. Utilities.formatDate()用于在Google Apps脚本中格式化日期。