我使用JavaScript遇到了一个独特的问题。运行以下代码我的系统时区UTC -5 Eastern Standard Time
我的值为-4 UTC
,它应该是-5 UTC
。
目前启用了夏令时,但JavaScript似乎并未意识到它。这里有什么问题,还有其他方法来检索正确的偏移吗?
var d = new Date();
var tz = d.toString().split("GMT")[1].split(" (")[0];
alert(tz);

我系统的时间和时区:
答案 0 :(得分:4)
现在(2015年4月8日) EST – Eastern Standard Time(-05:00 UTC)未生效,但EDT – Eastern Daylight Time是(-04:00 UTC) 。 JavaScript Date对象返回的值是正确的。
日期和时间对话框中"(UTC-05:00)东部时间(美国和加拿大)" 的行有误导性。该行未说明当前偏移量,仅表示当DST无效时的时区偏移量。
你也可以简化你的JavaScript,不需要解析toString()
的回报,实际上它被认为是不好的做法。
var offset = new Date().getTimezoneOffset();
document.write("UTC offset in minutes: " + offset
+ ", offset in hours: " + offset / 60);

只是一些值得思考的东西。
我不是任何方式的日期和时间专家,但我通常认为将时区视为与UTC偏移不同的东西是有帮助的。
时区是指具有法律,商业和社交目的的统一标准时间的区域。对于密切的商业或其他通信区域来说,保持同一时间是方便的,因此时区往往遵循国家及其细分的界限。
UTC偏移量是指特定地点和日期的协调世界时(UTC)的小时和分钟差异。
这种区别很重要,以加拿大萨斯喀彻温省为例。
加拿大萨斯喀彻温省位于山区时区的地理位置。但是,该省大部分地区全年都遵守中央标准时间。因此,它实际上是全年夏令时(DST),因为时钟在秋天不会被转回一小时。
所以这里是一个同时具有多个UTC偏移的时区(山区时区)的示例。或者,如果您愿意,萨斯喀彻温省从3月到11月属于山区时区,其余时间属于中央时区。