REST API 发送的日期格式在 IE 11 中无效

Date format being sent by REST API is Invalid in IE 11

我目前正在对后端进行一系列 REST 调用 API,但我无法控制在 JSON.

中发回的日期格式

发送的格式是这样的

2018 年 11 月 21 日,星期三 03:00:00.000Z

IE11 认为这是无效日期。我一直在使用 moment.js 获取当前日期和时间,并将其与 API 中发送的日期和时间进行比较。除 IE 外,它在任何地方都运行良好。我一直在尝试 Moment 文档中的所有内容,但我 return 的所有内容都被 IE11 视为无效。

我的日期设置如下

var date = new Date("Wed, 21 Nov 2018 03:00:00.000Z");  

更新:我也尝试过使用 moment

设置日期
var date = "Wed, 21 Nov 2018 03:00:00.000Z"
date = moment(d, "YYYY-MM-DD HH:mm:ss").toDate();

我试过很多不同的格式,但都return无效。

根据 IE,这就是 return 无效的内容。我试过先将日期转换为 moment 对象,然后再转换为有效的日期格式,但这似乎也不起作用。

我可以得出结论,IE 不喜欢日期末尾的 .000Z。如果我切断它,它会起作用,但我所有的时间都是格林威治标准时间。

您在 momentJS 构造函数中输入的格式 YYYY-MM-DD HH:mm:ss 与您实际输入的日期字符串没有任何相似之处……您是在告诉 moment 期待诸如“2018-11-16”之类的内容17:10:02”。也许您将此与您稍后想要 输出 的格式混淆,我不确定,因为它显然甚至不接近匹配示例数据。

选中 http://momentjs.com/docs/#/parsing/string-format/ 并选择适当的标记以匹配您提供的日期格式。这是一个适用于示例中给出的日期的示例:

var d = "Wed, 21 Nov 2018 03:00:00.000Z";
var m = moment(d, "ddd, DD MMM YYYY HH:mm:ss.SZ"); //parse the date based on the format tokens given
console.log(m.format("YYYY-MM-DD HH:mm:ss")); //output the date in a different format
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>