【问题标题】:Different values with Date() in Chrome and IEChrome 和 IE 中 Date() 的不同值
【发布时间】:2013-11-03 05:32:36
【问题描述】:

在这个fiddle 中,

的值
     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);
    });

【问题讨论】:

  • @mitthataydogmus 我也检查过,看到不同的值
  • 我的错,分隔符之后的值是相同的,但之前是相同的。不。你是对的@RoryMcCrossan
  • @mitthataydogmus 没问题。发现差异并不是最容易的工作。
  • 你试过momentjs.com吗?

标签: javascript jquery internet-explorer google-chrome


【解决方案1】:

每个浏览器都假定partial ISO formats 的时区不同——Chrome 假定它们使用 UTC,而 IE 假定它们是用户本地的。

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

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

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')

【讨论】:

    猜你喜欢
    • 2014-08-23
    • 2014-08-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-03
    • 2013-11-15
    • 2013-05-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多