我有一个像这样的日期字符串:20171010T022902.000Z
,我需要从这个字符串创建Javascript日期。 new Date('20171010T022902.000Z')
将返回无效日期
。
我发现可以使用 moment.js 来实现此目的,但我不确定如何为给定的示例指定相应的格式。我从另一个线程中找到了这个示例:
var momentDate = moment('1890-09-30T23:59:59+01:16:20', 'YYYY-MM-DDTHH:mm:ss+-HH:mm:ss');
var jsDate = momentDate.toDate();
问题:
如何根据给定的日期字符串以以下格式创建 JavaScript 日期:20171010T022902.000Z
(使用 moment)?
最佳答案
您的输入 (20171010T022902.000Z
) 与已知的 ISO 8601 匹配,因此您可以简单地使用 moment(String)
解析方法。在 Supported ISO 8601 strings您将找到文档部分:
20130208T080910.123 # Short date and time up to ms
然后你可以使用toDate()
方法
To get a copy of the native Date object that Moment.js wraps
您的代码可能如下所示
var m = moment('20171010T022902.000Z');
console.log( m.format() );
console.log( m.toDate() );
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>
请注意,此代码不会显示弃用警告(在 Bergi 的评论中引用),因为您输入的是 ISO 8601 已知格式。请参阅this guide了解有关此警告的更多信息。
此外“默认情况下,时刻会以本地时间进行解析和显示”,如所述 here因此 format()
将显示 UTC 输入的本地值(20171010T022902.000Z
以 Z
结尾)。请参阅moment.utc()
, utc()
和 Local vs UTC vs Offset guide了解有关时刻 UTC 模式的更多信息。
关于javascript - 奇怪的 ISO 格式日期字符串到 Javascript 日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46718828/