Javascript 对具有不同时区的新日期返回对象的后续调用
我面临着一种奇怪的情况,即传递时间戳的Javascript 对具有不同时区的新日期返回对象的后续调用,javascript,date,timezone,Javascript,Date,Timezone,我面临着一种奇怪的情况,即传递时间戳的Date构造函数的后续调用返回具有不同时区的日期对象 当我使用对象获取月份的某一天时,这导致了一个问题 new Date(1509228000000).getDate() 29 new Date(1509314400000).getDate() 29 如果使用同一时区,结果将是29和30 我的理解是javascript应该使用系统或浏览器时区。我不明白两个调用,一个接一个,如何返回不同时区的对象 我使用的是Chrome版本61.0.3163.100(官方
Date
构造函数的后续调用返回具有不同时区的日期对象
当我使用对象获取月份的某一天时,这导致了一个问题
new Date(1509228000000).getDate()
29
new Date(1509314400000).getDate()
29
如果使用同一时区,结果将是29和30
我的理解是javascript应该使用系统或浏览器时区。我不明白两个调用,一个接一个,如何返回不同时区的对象
我使用的是Chrome版本61.0.3163.100(官方版本)(64位)
澄清
我知道时间戳(毫秒数)可以在不同的时区中表示。我不明白的是,调用具有不同值的日期构造函数如何在同一台机器和浏览器中生成具有不同时区的日期对象。在欧盟国家,中欧夏季时间(CEST)将于2017年10月29日当地时间凌晨3:00过渡到中欧时间(CET)。您的结果只是反映了这种变化。这种行为是意料之中的 需要说明的是,您显示的两个值都是在10月29日的本地时区。调用
getDate()
的正确结果实际上是29
为了进一步了解,我建议您阅读:
- 社区维基
getDate()
的正确结果实际上是29
为了进一步了解,我建议您阅读:
- 社区维基
Date
对象更好地理解,如果您将其视为存储绝对特定时间点(Unix时间戳,如果您愿意)的变量。这个内部值没有附加时区信息,因为它不是必需的(毕竟它是一个绝对值),而且它是JavaScript需要的一切。。。直到它必须与外部世界交互,即解析或生成人类可读的日期
这样的日期总是本地的,因此需要一个时区。JavaScript创建者使用的方法是使用两个时区:
- UTC
- 在运行JavaScript代码的计算机中,将任何时区配置为默认时区
如果你好奇,这是可能的,因为浏览器有一个。这样的数据库是许多程序共享的宝贵资源。如果让我放松总体技术准确性(同时希望不要说任何明显错误的话),我认为JavaScript
Date
对象更好地理解,如果您将其视为存储绝对特定时间点的变量(如果您愿意,可以使用Unix时间戳). 这个内部值没有附加时区信息,因为它不是必需的(毕竟它是一个绝对值),而且它是JavaScript需要的一切。。。直到它必须与外部世界交互,即解析或生成人类可读的日期
这样的日期总是本地的,因此需要一个时区。JavaScript创建者使用的方法是使用两个时区:
- UTC
- 在运行JavaScript代码的计算机中,将任何时区配置为默认时区