【问题标题】:How does javascript know the time zone of a date in milliseconds?javascript如何以毫秒为单位知道日期的时区?
【发布时间】:2010-12-07 17:57:28
【问题描述】:

使用 w3schools 的交互式 js 环境 (here) 执行时的以下代码:

var d1=new Date(1306796400000);
document.write("Original form: " + d1);

显示以下消息:

Original form: Tue May 31 2011 00:00:00 GMT+0100 (GMT Daylight Time)

但是这个:

var d1=new Date(1231977600000);
document.write("Original form: " + d1);

显示此消息:

Original form: Thu Jan 15 2009 00:00:00 GMT+0000 (GMT Standard Time)

我认为毫秒值只是 UTC 自 1970 年 1 月 1 日以来的毫秒数。 但看起来它包含一个时区标志。

谁能说出毫秒值格式是什么?

提前致谢。

【问题讨论】:

    标签: javascript datetime utc


    【解决方案1】:

    没有特殊的标志。只是Daylight Savings 生效。

    【讨论】:

    • 啊!这是有道理的,也是一个简洁的答案。
    • 您能详细说明一下吗? wiki 本身并没有多大帮助~
    • GMT 时区实施夏令时,因此在一年中的某些时候,每个人都会将时钟向前移动一个小时,然后再向后移动一个小时。默认情况下,JavaScript 以用户的默认时区显示时间,在本例中为 GMT,因此用户可能来自英国或附近的某个地方。不确定这是否是您想要的?
    【解决方案2】:

    Javascript 在用户的浏览器中执行,然后从用户的操作系统中读取当前时区。这就是它可以“猜测”正确时区的方式。

    【讨论】:

      【解决方案3】:

      毫秒不包含任何此类标志。但是,您使用 new Date(n) 创建的日期对象的时区取决于您的解释器/浏览器中的语言环境。对我来说:

      var d = new Date(1231977600000);
      
      d.toString();
      // "Wed Jan 14 2009 17:00:00 GMT-0700 (Mountain Standard Time)"
      
      d.toUTCString();
      // "Thu, 15 Jan 2009 00:00:00 GMT"
      

      【讨论】:

        【解决方案4】:

        它没有。它使用本地时区信息,包括 DST 转换日期。因此在

        javascript:alert([new Date(1306796400000),new Date(1231977600000)].join('\n'))
        

        将您的语言环境设置为无 DST 时区,差异将消失。

        【讨论】:

          猜你喜欢
          • 2022-11-27
          • 1970-01-01
          • 2019-05-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-05-25
          相关资源
          最近更新 更多