【问题标题】:Google Apps Script: parsing strings as Date objectsGoogle Apps 脚本:将字符串解析为日期对象
【发布时间】:2016-08-24 09:17:00
【问题描述】:

全部,

考虑以下 JavaScript sn-p,它采用字符串化日期并创建一个新的 Date 对象:

var str = '2016-02-01';
var d = new Date(str);
console.log(d);

运行上述返回,例如Mon Feb 01 2016 00:00:00 GMT+0000 (GMT Standard Time)

但是,将等效代码作为 Google Apps 脚本函数运行不会产生相同的结果:

function strToDateTest() {
   var str = '2016-02-01';
   var d = new Date(str);
   Logger.log(d);
}

在这种情况下,输出为Thu Jan 01 01:00:00 GMT+01:00 1970

我假设,鉴于不同的日志输出,Google Apps 脚本使用的是自己的 Date 实现,而不是 the native JavaScript object

有人能对此有所了解,并建议如何最好地解析 Google Apps 脚本中的日期值吗?

【问题讨论】:

  • 众所周知,允许实现解析日期字符串在实现之间是不一致的,因此强烈建议不要这样做。手动解析日期字符串要好得多,如果您只有一种格式要处理,库可以提供帮助或一个简单的函数。
  • 我认为您的意思是 built–in Date 对象(即实现提供的对象),而不是 native (语言规范中不再定义)。因此,如果 Google Apps 脚本提供了一个 Date 对象,那么它就是内置的(您的“本机”)Date 对象。

标签: javascript date google-apps-script


【解决方案1】:

Form me Google Apps 脚本未运行最新的 ECMAScript 版本 (doc here)。所以我可以read 这在这个版本中没有实现。如果你用 "THH:mm:ss.sssZ" 装饰你的字符串,它应该可以工作:

function strToDateTest() {
   var str = '2016-02-01';
   str +='T00:00:00.000Z';
   var d = new Date(str);
   Logger.log(d);
}

【讨论】:

  • 根据链接的文档,Google Apps Script 中的内置 Date 基于 ECMAScript ed 3,因此您不应依赖它来解析 any 日期字符串,因为该版本的标准没有指定任何支持的格式。使用简单的函数或库手动解析字符串要好得多。
猜你喜欢
  • 1970-01-01
  • 2012-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多