new Date().getTimezoneOffset() 和 new Date(string).getTimezoneOffset() 有什么区别?
What is the difference between new Date().getTimezoneOffset() and new Date(string).getTimezoneOffset()?
我最近注意到这两个值在某些日期是不同的。
例如,两者的输出对于 04/01/2020
相同,但对于 03/01/2020
不同。
console.log(
new Date("2020/03/01").getTimezoneOffset(), //-210
new Date().getTimezoneOffset(), //-270
);
console.log(
new Date("2020/04/01").getTimezoneOffset(), //-270
new Date().getTimezoneOffset(), //-270
);
我今年所有月份都做了这个测试,结果是:
2020/01/01
-> 不同
2020/02/01
-> 不同
2020/03/01
-> 不同
2020/04/01
-> 相同
2020/05/01
-> 相同
2020/06/01
-> 相同
2020/07/01
-> 相同
2020/08/01
-> 相同
2020/09/01
-> 相同
2020/10/01
-> 不同
2020/11/01
-> 不同
2020/12/01
-> 不同
getTimezoneOffset
函数 returns 本地时区与 UTC 的偏移量,适用于您调用它的 Date
object 实例所代表的时刻上。
如果您在 new Date()
上调用它,您要求的是 当前 偏移量,因为默认构造函数设置 Date
object 的时间戳到当前值,同样由 Date.now()
.
给出
如果您在 new Date(value)
上调用它,您要求的是适用于该值表示的时刻的偏移量。
时区偏差不是固定的,而是由政府制定的,可以很容易地改变。它们发生变化的一个原因是夏令时 (DST),该时间可能适用于也可能不适用于一年中部分时间的给定时区。它们可能会更改的其他原因是由于政府政策围绕修改 DST 的遵守、DST 的开始和停止日期或时间,或者 标准 时间偏移的更改。由于这些变化会产生历史差异,因此当您使用 getTimezoneOffset
.
请求与 UTC 的偏移量时,有必要知道您询问的是哪个时间点
您可以在 the timezone tag wiki 中标题为 “时区!= 偏移量” 的部分阅读更多相关信息。
另一件事 - 您为字符串 ("2020/03/01") 提供的格式是 non-standard。给定的 JavaScript 引擎可能支持也可能不支持,但它不是规范的一部分。相反,您应该使用 "2020-03-01"
(如果您指的是该日期的午夜 UTC)或 "2020-03-01T00:00:00"
(如果您指的是该日期的午夜当地时间)。
我最近注意到这两个值在某些日期是不同的。
例如,两者的输出对于 04/01/2020
相同,但对于 03/01/2020
不同。
console.log(
new Date("2020/03/01").getTimezoneOffset(), //-210
new Date().getTimezoneOffset(), //-270
);
console.log(
new Date("2020/04/01").getTimezoneOffset(), //-270
new Date().getTimezoneOffset(), //-270
);
我今年所有月份都做了这个测试,结果是:
2020/01/01
-> 不同2020/02/01
-> 不同2020/03/01
-> 不同2020/04/01
-> 相同2020/05/01
-> 相同2020/06/01
-> 相同2020/07/01
-> 相同2020/08/01
-> 相同2020/09/01
-> 相同2020/10/01
-> 不同2020/11/01
-> 不同2020/12/01
-> 不同
getTimezoneOffset
函数 returns 本地时区与 UTC 的偏移量,适用于您调用它的 Date
object 实例所代表的时刻上。
如果您在
给出new Date()
上调用它,您要求的是 当前 偏移量,因为默认构造函数设置Date
object 的时间戳到当前值,同样由Date.now()
.如果您在
new Date(value)
上调用它,您要求的是适用于该值表示的时刻的偏移量。
时区偏差不是固定的,而是由政府制定的,可以很容易地改变。它们发生变化的一个原因是夏令时 (DST),该时间可能适用于也可能不适用于一年中部分时间的给定时区。它们可能会更改的其他原因是由于政府政策围绕修改 DST 的遵守、DST 的开始和停止日期或时间,或者 标准 时间偏移的更改。由于这些变化会产生历史差异,因此当您使用 getTimezoneOffset
.
您可以在 the timezone tag wiki 中标题为 “时区!= 偏移量” 的部分阅读更多相关信息。
另一件事 - 您为字符串 ("2020/03/01") 提供的格式是 non-standard。给定的 JavaScript 引擎可能支持也可能不支持,但它不是规范的一部分。相反,您应该使用 "2020-03-01"
(如果您指的是该日期的午夜 UTC)或 "2020-03-01T00:00:00"
(如果您指的是该日期的午夜当地时间)。