Fly*_*rse 3 javascript timezone
我设置了UTC + 0时间,并希望它显示在每台计算机的本地时区的不同计算机上.但是当我在计算机(VMware VM)中运行Chrome中的代码时,它给了我以下信息:
Date.UTC(2014, 0, 27, 6) // 1390802400000
var now = new Date() // Tue Aug 05 2014 07:32:38 GMT-0400 (EDT)
now.getTime() // 1407238358829
new Date(1407238358829) // Tue Aug 05 2014 07:32:38 GMT-0400 (EDT)
new Date(1390802400000) // Mon Jan 27 2014 01:00:00 GMT-0500 (EST)
Run Code Online (Sandbox Code Playgroud)
我的电脑是GMT-4,但为什么最后一行显示的是EST的时间而不是EDT?
我也在其他计算机上尝试相同的代码,例如EC2实例(GMT + 0)和我的朋友(GMT + 8),这些计算机只显示其本地时区的时间.
但为什么我的电脑显示其他时区的时间?
代码工作正常.这就是时区实际工作的方式.希望一些适当的术语能够清除你的困惑.
A"时区偏移"是不一样的"时间区".您可以在timezone标记wiki的 "Time zone!= offset"部分中阅读更多相关信息.
你说:
我的电脑是GMT-4
这是不正确的.您的计算机位于北美"东部时间"时区.在Linux/Mac上,这可能会显示为"America/New_York".在Windows上,它将在您的控制面板中显示为"东部时间(美国和加拿大)".
此时区在冬季的时区偏移为UTC-05:00,夏令时的UTC-04:00在夏令时有效.我们分别将这些称为"东部标准时间"(或东部标准时间)和"东部夏令时间"(或东部夏令时间).虽然有时这些被称为"时间区"指的是,您不妨考虑一下他们的"时区段" -因为它们指的只是部分的实际时区.
回顾一下:
EST = Eastern Standard Time = UTC-05:00 = GMT-5
EDT = Eastern Daylight Time = UTC-04:00 = GMT-4
ET = Eastern Time = "America/New_York" = "Eastern Time (US & Canada)"
- Uses EST in the winter
- Uses EDT in the summer
Run Code Online (Sandbox Code Playgroud)
new Date(1390802400000) 显示为EST,因为该值是1月份,即冬季.
你还说:
我也在其他计算机上尝试相同的代码,例如EC2实例(GMT + 0)和我的朋友(GMT + 8),这些计算机只显示其本地时区的时间.
EC2实例可能配置为UTC.这是服务器的最佳实践.这意味着它将始终具有零偏移.夏令时不会改变.
您朋友的计算机可能处于不遵守夏令时的时区.例如(我猜这里),也许他在"Asia/Shanghai"时区,这在中国使用.由于中国不使用夏令时,因此他的抵消时间为UTC + 08:00.
| 归档时间: |
|
| 查看次数: |
2636 次 |
| 最近记录: |