javascript - 奇怪的 ISO 格式日期字符串到 Javascript 日期

标签 javascript momentjs

我有一个像这样的日期字符串: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.000ZZ 结尾)。请参阅moment.utc() , utc()Local vs UTC vs Offset guide了解有关时刻 UTC 模式的更多信息。

关于javascript - 奇怪的 ISO 格式日期字符串到 Javascript 日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46718828/

相关文章:

javascript - 如何让一个输入表单有多个输出?

javascript - 当函数仍在执行任务时停止回调

javascript - Protractor 点击元素数组

javascript - SystemJS - 时刻不是函数

javascript - 获取不同语言的月份名称数组

javascript - 时刻.js : does en locale should display time in 12 hours format?

javascript - 从javascript中的两个单独的对象数组中过滤具有相同id的对象

javascript - 比较二维数组 - 寻找独特的项目

javascript - 两个循环遍历日期

javascript - MomentJS 从日期对象中删除时间 (javascript)