【发布时间】:2018-11-16 20:26:51
【问题描述】:
我的开始日期如下所示:
var startDate = "Mon Jun 30 2014 00:00:00 GMT-0400 (EDT)";
我正在尝试将其格式化为:
var endDate = "2014-06-30T00:00:00-04:00";
我已使用 toISOString() 方法将其正确半格式化:
var formattedDate = new Date(startDate);
formattedDate = formattedDate.toISOString();
将其格式化为“2014-06-30T04:00:00.000Z”。这接近我需要的,但我想知道是否有内置方法将其格式化为“-04:00”格式?还是我需要将我的字符串分成几部分并以正确的格式将其重新组合在一起?
另外,我正在使用 ES5 的 Google Apps Script,并且尽可能避免使用 jQuery。
【问题讨论】:
-
除了使用像 moment.js 这样的库之外,您还必须自己解析字符串并将它们重新组合在一起。从第一个字符串中获取
-4:00并将其拼接到toISOString() 版本中 -
这是什么格式?如果它是非标准的,则必须自己对其进行编码。请参阅 the docs for toISOString(); 中的 polyfill 示例并根据您的需要进行更改!
-
这似乎是XY problem。您要解决的实际问题是什么?
2014-06-30T00:00:00-04:00和2014-06-30T04:00:00.000Z是相同的时间戳。一个有时区偏移,另一个是 UTC (Z),但它们代表相同的时间点,任何理解 ISO 8601 的程序都可以正确处理。考虑到这一点,为什么需要时区偏移量? -
@JordanRunning 我需要这种格式的唯一原因是因为我输入日期的这个应用程序需要这种格式,并且会抛出 Z 格式的错误。
-
@MattMcCode 检查我的答案。 Google Apps 脚本有一个内置方法来处理您的用例。
标签: javascript date google-apps-script