Google Apps脚本字符串到目前为止的转换

时间:2013-02-13 14:02:18

标签: date google-apps-script

我在google apps脚本中将字符串转换为日期对象时遇到了一些问题。

我的日期采用以下格式,来自第三方API:

2013-01-17T17:34:50.507

我正在尝试将其转换为Date对象:

return Date(stringDate);

这是回复:

Thu Jan 01 01:00:00 GMT+01:00 1970

有人可以告诉我我做错了什么,以及如何解决这个问题?

非常感谢

4 个答案:

答案 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