2016-08-24 66 views
0

所有,谷歌Apps脚本:解析字符串作为Date对象

考虑下面的JavaScript代码段,这需要字符串化的日期,并创建一个新的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)

但是,在运行的等效代码作为谷歌应用脚​​本功能不产生相同的结果:

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脚本中的日期值?

+0

允许实现解析日期字符串是众所周知的是在不同的实现不一致,因此强烈建议反对。最好是手动分析日期字符串,如果只有一种格式需要处理,库可以提供帮助或简单的功能。 – RobG

+1

我认为你的意思是[* built-in *](http://ecma-international.org/ecma-262/7.0/index.html#sec-ecmascript-overview)Date对象(即实现提供的对象) ,而不是* native *(在语言规范中不再定义)。因此,如果Google Apps脚本提供了一个Date对象,那么这是内置的(您的“本机”)Date对象。 – RobG

回答

1

单击我的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); 
} 
+0

这完全正确 - 谢谢! – robyaw

+0

根据链接文档,Google Apps脚本中的内置日期基于ECMAScript ed 3,因此您不应该依赖它来解析任何**日期字符串,因为该版本的标准没有指定任何受支持的格式。最好用一个简单的函数或库手动解析字符串。 – RobG