我正在尝试使用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);
但失败了。
答案 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
解决了它