我在google apps脚本中将字符串转换为日期对象时遇到了一些问题。
我的日期采用以下格式,来自第三方API:
2013-01-17T17:34:50.507
我正在尝试将其转换为Date对象:
return Date(stringDate);
这是回复:
Thu Jan 01 01:00:00 GMT+01:00 1970
有人可以告诉我我做错了什么,以及如何解决这个问题?
非常感谢
答案 0 :(得分:8)
使用moment.js,解析ISO 8601 format中的任何内容都非常简单。
var date = Moment.moment("2013-01-17T17:34:50.507").toDate();
您也可以使用moment.js来解析您的任意日期字符串。
要在GAS中使用moment.js,只需在脚本编辑器中添加即可。
在GAS脚本编辑器中打开脚本,然后转到"资源"然后"库...",然后将此项目键MHMchiX6c1bwSqGM1PZiW_PxhMjh3Sh48
并单击"添加"。从下拉列表中选择版本,然后单击"保存"。现在,您已准备好在GAS中使用moment.js。
moment.js可用于解析日期字符串,创建格式化日期字符串以及许多其他日期操作。感谢作者!
您可以找到moment.js文档here。
答案 1 :(得分:6)
Date对象似乎不知道如何处理该日期。日期在ISO 8601 format。如果给定时区信息,Javascript可以处理日期。
您必须进行一些测试,但如果给您的那些日期是UTC时间,那么只需在日期字符串的末尾添加Z
,然后再拨打new Date()
。
编辑:解析日期时,Apps脚本日期对象似乎无法处理UTC以外的时区。 I opened an issue for it
答案 2 :(得分:4)
它在GScript中不起作用,至少在我写这篇文章时对我来说是这样。 这篇文章提供了一个有效的替代方案:How do I format this date string so that google scripts recognizes it?
答案 3 :(得分:0)
到目前为止new Date()
似乎可以正常工作:
var dT = new Date("2013-01-17T17:34:50.507");
console.info("dT: %s or %d", dT, dT.getTime());
在Google Apps脚本中返回dT: Thu Jan 17 17:34:50 GMT+01:00 2013 or 1.358440490507E12