Momentjs 严格格式始终返回“无效日期”

agn*_*nor 3 javascript momentjs

根据momentjs docstoJSON()产生ISO 8601格式的字符串并且moment.defaultFormat是ISO 8601格式。

考虑到这一点,我希望得到一个有效的日期,但是

moment(moment().toJSON(), moment.defaultFormat, true).toString() 
Run Code Online (Sandbox Code Playgroud)

总是返回“无效日期”。

Vin*_*zoC 5

您是对的,moment().toJSON()返回 ISO 8601 格式,但与moment.defaultFormat.

问题是moment().toJSON()包括SSS不属于moment.defaultFormat(即YYYY-MM-DDTHH:mm:ssZ)的小数秒(令牌)。

moment().toJSON() 可以解析输出:

这是一个实时示例:

console.log( moment(moment().toJSON(), moment.defaultFormat, true).toString()  );

console.log( moment().toJSON() );
console.log( moment.defaultFormat );

console.log( moment(moment().toJSON(), 'YYYY-MM-DDTHH:mm:ss.SSSZ', true).toString()  );

console.log( moment(moment().toJSON(), moment.ISO_8601, true).toString()  );
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>
Run Code Online (Sandbox Code Playgroud)