22

我在谷歌应用程序脚本中将字符串转换为日期对象时遇到了一些问题。

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

2013-01-17T17:34:50.507

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

return Date(stringDate);

这是被退回的:

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

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

4

4 回答 4

12

使用moment.js,解析任何ISO 8601 格式就这么简单。

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 文档。

于 2017-05-13T06:24:27.870 回答
8

Date 对象似乎不知道如何处理该日期。日期采用ISO 8601 格式。如果给定时区信息,Javascript 可以处理日期。

您将不得不进行一些测试,但如果给您的日期是 UTC 时间,那么只需Z在调用new Date().

编辑:解析日期时,Apps 脚本日期对象似乎无法处理 UTC 以外的时区。我为它开了一个问题

于 2013-02-13T14:19:27.327 回答
5

它在 GScript 中不起作用,至少在我编写它的时候对我来说是这样。这篇文章提供了一个可行的选择:如何格式化这个日期字符串以便谷歌脚本识别它?

于 2014-02-14T13:37:46.927 回答
0

截至目前new Date()似乎工作:

var dT = new Date("2013-01-17T17:34:50.507");
console.info("dT: %s or %d", dT, dT.getTime());

dT: Thu Jan 17 17:34:50 GMT+01:00 2013 or 1.358440490507E12在 Google Apps 脚本中返回

于 2019-11-02T23:33:41.357 回答