在javascript中将糟糕的ISO格式解析为良好的日期

Parsing bad ISO format into a good date in javascript

本文关键字:日期 格式 ISO javascript      更新时间:2023-09-26

如何在javascript中解析这一行到一个好的日期?

2013 - 12 - 19 - t06:59:27.888 + 3

我认为主要的问题是毫秒。我希望使用moment.js将日期解析为更好的格式,我认为它可以解析unix风格的时间戳,但无法让它与这些类型一起工作。

时刻"(2013 - 12 - 19 t06:59:27.888 + 3")。

这是(众多)有效的 ISO 8601格式之一。

小数可以加到三个时间元素中的任何一个。但是,分数只能加到表示中最低阶的时间元素上。

如果momentjs默认不接受它作为ISO 8601(小数秒数+偏移量的格式是而不是在"支持所有浏览器"1中列出),格式很容易手动指定:

var fmt = "YYYY-MM-DDThh:mm:ss.SSSZZ";
var d = moment(str, fmt);

从momentjs源,ISO格式应该被接受,假设评论没有说谎,它在这里工作(TM)对momentjs 2.2.1。

// iso 8601 regex
// 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)
isoRegex = /^'s*(?:[+-]'d{6}|'d{4})-(?:('d'd-'d'd)|(W'd'd$)|(W'd'd-'d)|('d'd'd))((T| )('d'd(:'d'd(:'d'd('.'d+)?)?)?)?(['+'-]'d'd(?::?'d'd)?|'s*Z)?)?$/,