【问题标题】:why new Date() function gives different output in chrome and firefox为什么 new Date() 函数在 chrome 和 firefox 中给出不同的输出
【发布时间】:2016-03-14 18:15:02
【问题描述】:

我将这个新日期传递到 Firefox 和 Chrome 控制台(同一台计算机和时区),我得到的结果好坏参半。太令人困惑了...... 镀铬 新日期(); //2015 年 12 月 9 日星期三 18:06:55 GMT+0530 (IST)

在火狐中 新日期(); //日期 2015-12-09T12:36:34.410Z

【问题讨论】:

    标签: javascript date time


    【解决方案1】:

    您的困惑是由于显示的时区不同造成的。

    Chrome 为您提供 UTC+0 时间,而 Firefox 为您提供 GMT+0530 时间。

    你可以通过写来指定你希望两者都始终是UTC

    var myDate = new Date();
    myDate.toISOString() // will give you a date in the format you see by Chrome
    

    【讨论】:

    • 不错的一个。我完全误解了这个问题。 :-) 值得注意的是Date 对象具有相同的值,这里的区别纯粹是它在变成字符串时是如何输出
    • 日期实例没有 UTC 方法。您可能想要的是 toISOString(在 UTC 中被指定为 ISO 8601 长格式)或 toUTCString,它取决于实现,但始终使用 UTC 作为值。
    • @RobG 你是对的,我在发布之前已经检查过了,但似乎某个特定的库可能已经将它添加到日期原型中。
    【解决方案2】:

    您看到的是Date.prototype.toString 的结果,它完全 依赖于实现。因此,您很可能会在您测试的每个客户端中看到不同的字符串。

    您可以使用toISOString 来获取ISO 8601 格式字符串,即UTC。有一个polyfill on MDN

    document.write(new Date().toISOString());

    【讨论】:

      【解决方案3】:

      Firefox 不喜欢字符串中的“-”

      使用正则表达式将所有出现的 - 替换为 /,然后将字符串转换为 Date 对象。

      var str = '01-25-2019 10:28:15 AM';
      
      str = str.replace(/-/g,'/');  //replaces all occurances of "-" 
      with "/"
      
      var dateobject = new Date(date_string);
      
      alert(dateobject.toDateString());
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-02-13
        • 2013-08-13
        • 2019-08-09
        • 2023-04-08
        • 2011-10-22
        • 2016-01-12
        相关资源
        最近更新 更多