Apps脚本时区关闭一小时

时间:2014-08-22 09:27:35

标签: google-apps-script

我在Apps脚本中使用日期/时间时遇到一些问题。任何人都可以告诉我不同​​的值来自何处以及我需要更改内容以在脚本中获得一致性>

如果我使用以下功能,它会以小时偏移(-1小时)记录时间。

function testDate(){
 var date = new Date().toISOString().slice(0, 19).replace('T', ' ');
  Logger.log(date);
}

您可以在下图中看到日志记录输出。它显示添加的日志条目为10:09,但从该函数添加的日志输出值为09:09。 09:09来自何处?我如何更改以获得伦敦GMT的正确时间?

我已经包含了项目的时区,因此您可以看到这一点。我还强调了上次修改时间,这似乎也是错误的。

请注意 - 此脚本未连接到电子表格,因此没有时区信息。

enter image description here

3 个答案:

答案 0 :(得分:0)

当您写new Date().toISOString()时,返回的值始终为UTC(see doc here),表示" GMT + 00"

但是伦敦(据我所知)在夏天使用夏令时(英国夏令时-BST简称,即使西欧XD的温度很低,我们仍然在夏天!)这是GMT + 01。

存在差异。

脚本属性中的最后一个修改字段是UTC,因为可以看到时间戳中的Z(Z在军事时间来自Zulu,如果您愿意,则来自Z)。

答案 1 :(得分:0)

现在它是BST,这是UTC / GMT的一小时。要获取语言环境中的当前时间,请使用toLocaleString()。

  Logger.log(new Date().toGMTString());
  Logger.log(new Date().toLocaleString());
  Logger.log(new Date().toUTCString());
  Logger.log(new Date().toISOString());

给出了这些结果

[14-08-22 10:46:03:660 BST] Fri, 22 Aug 2014 09:46:03 GMT
[14-08-22 10:46:03:660 BST] 22 August 2014 10:46:03 BST
[14-08-22 10:46:03:660 BST] Fri, 22 Aug 2014 09:46:03 GMT
[14-08-22 10:46:03:661 BST] 2014-08-22T09:46:03.661Z

答案 2 :(得分:0)

提问者的评论表明他也喜欢输出格式化的ISO风格,所以我扩展了Bruce的new Date().toLocaleString()方法并提出了以下内容:

var dateTimeArray = new Date().toLocaleString().split(" ");

var months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];

/*
Return the 2 digit number associated with the "toLocaleString" spelt-out month:
1) Get the index value of the month from the array item
2) Add 1 to it (because it's zero-indexed)
3) Convert it to a string
4) Left pad all month numbers with a zero
5) Get the last 2 digits
*/
var monthNumber = ('0' + (months.indexOf(dateTimeArray[1])+1).toString()).slice(-2);

Logger.log('Before: '+new Date().toLocaleString())
Logger.log('After: '+dateTimeArray[2]+'-'+monthNumber+'-'+dateTimeArray[0]+' '+dateTimeArray[3]);

在Logs窗口中,这是一些示例输出:

[16-07-08 23:57:28:217 BST] Before: 08 July 2016 23:57:28 BST
[16-07-08 23:57:28:218 BST] After: 2016-07-08 23:57:28