MomentJS无法转换格式为YYYY-MM-DD HH:mm:ss.fff Z的日期

时间:2017-11-19 17:34:41

标签: momentjs

我正在尝试使用MomentJS转换下一个日期:

const moment = require('moment');

var datetime = "2017-11-19 02:45:22.011 +00:00";
var newDate = moment(datetime);

但它失败了,下一条消息出现了:

  

弃用警告:提供的值不在公认的RFC2822或        ISO格式。时刻构造回落到js Date(),这不是        所有浏览器和版本都可靠。非RFC2822 / ISO日期格式        气馁,将在即将发布的主要版本中删除。        有关更多信息,请参阅http://momentjs.com/guides/#/warnings/js-date/        资讯

显示问题的小部件:

var datetime = "2017-11-19 02:45:22.011 +00:00";
var newDate = moment(datetime);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.19.2/moment.min.js"></script>

我也尝试过使用:

moment.utc(datetime); 

但失败了。

2 个答案:

答案 0 :(得分:2)

正如moment(String)文档所说:

  

从字符串创建片刻时,我们首先检查字符串是否与已知的ISO 8601格式匹配,然后检查字符串是否与RFC 2822 Date time format匹配,然后再降至new Date(string)的后退如果找不到已知格式。

2017-11-19 02:45:22.011 +00:00不符合ISO 8601格式,因为小数秒和UTC偏移之间存在空间2017-11-19 02:45:22.011+00:00是输入的ISO 8601版本)。所以你可以使用moment(String, String),这里是一个实时样本:

var datetime = "2017-11-19 02:45:22.011 +00:00";
var newDate = moment(datetime, 'YYYY-MM-DDTHH:mm:ss.fff Z');
console.log(newDate.format());
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.19.2/moment.min.js"></script>

答案 1 :(得分:0)

重新格式化日期字符串:

2017-11-19 02:45:22.011 +00:00

要:

2017-11-19T02:45:22.011Z

解决了它