我目前正在对后端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),那么它将起作用。
答案 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>