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

时间:2018-11-16 15:19:26

标签: javascript date momentjs internet-explorer-11

我目前正在对后端API进行一系列REST调用,但我无法控制JSON中发回日期的格式。

正在发送的格式是这个

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

IE11认为这是无效日期。我一直在使用moment.js来获取当前日期和时间,并将其与API中发送的日期和时间进行比较。除了在IE中,它在任何地方都能正常运行。我一直在尝试来自Moment文档的所有内容,但是IE11认为我返回的所有内容均无效。

我将日期设置如下

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

更新:我也尝试过使用时刻设置日期

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

我尝试了许多不同的格式,并且所有内容都无效。

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

我可以得出结论,IE在日期结束时不喜欢.000Z。如果我将其删除,但我所有的时间都在格林尼治标准时间(GMT),那么它将起作用。

1 个答案:

答案 0 :(得分:1)

您要输入的格式YYYY-MM-DD HH:mm:ss与您实际输入的日期字符串没有相似之处……您告诉的时刻是在期待“ 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>