Chrome和IE中的Date()具有不同的值

在这个小提琴 ,价值观

new Date(val[0]).getTime() 

Chrome和IE不同。 Chrome值似乎是正确的,是否有一种解决方法可以在IE中获得正确的值。

码:

 $(function () { var text=""; $.each($.parseJSON("[{\"name\":\"critical\",\"data\":[[\"2013-10-01T00:00:00\",830],[\"2013-10-02T00:00:00\",257],[\"2013-10-03T00:00:00\",160],[\"2013-10-04T00:00:00\",200]]},{\"name\":\"normal\",\"data\":[[\"2013-10-01T00:00:00\",24],[\"2013-10-02T00:00:00\",20],[\"2013-10-03T00:00:00\",13],[\"2013-10-04T00:00:00\",30]]},{\"name\":\"ignore\",\"data\":[[\"2013-10-01T00:00:00\",1732],[\"2013-10-02T00:00:00\",1220],[\"2013-10-03T00:00:00\",1120],[\"2013-10-04T00:00:00\",1500]]}]"), function (key, value) { $.each(value.data, function (key, val) { text += "["+(new Date(val[0]).getTime()).toString()+","+ val[1].toString()+"]"; }); } ); $("#container").html(text); }); 

每个浏览器都假定部分ISO格式的时区不同 – Chrome假定它们是UTC 格式 ,而IE假定它们是用户本地的。

 console.log(new Date("2013-10-01T00:00:00").getUTCHours()); // Chrome: 0 // IE 10: 5 (for US/Central) 

如果格式中包含时区,例如UTC的Z ,那么它们应该解析相同的:

 console.log(new Date("2013-10-01T00:00:00Z").getUTCHours()); // Chrome: 0 // IE 10: 0 console.log(new Date("2013-10-01T00:00:00-04:00").getUTCHours()); // Chrome: 4 // IE 10: 4 

并且,如果需要,您可以在解析之前添加它:

 new Date(val[0] + 'Z')