为何getTimezoneOffset()的返回值会随传入日期变化?
为什么不同日期调用getTimezoneOffset()返回不同的时区偏移值?
这是因为时区偏移值并非固定不变,它会随历史时区规则变更而变化:
- 很多地区的时区政策(比如夏令时的启用/取消、标准时偏移调整)在不同年份有过修改,部分地区甚至在不同历史时期属于完全不同的时区体系。
getTimezoneOffset()方法返回的是本地时区在指定日期对应的UTC偏移量,它会根据该日期当时适用的时区规则计算,而不是返回一个固定的当前时区偏移。
你给出的代码示例正好体现了这种历史变更:
new Date('2016-05-01T03:24:00Z').getTimezoneOffset() > -120 new Date('1950-05-01T03:24:00Z').getTimezoneOffset(); > -60 new Date('1900-05-01T03:24:00Z').getTimezoneOffset(); > -84
三个不同年份的日期,对应本地时区在当时的UTC偏移分别是UTC+2、UTC+1、UTC+1小时24分钟,所以返回的偏移值(以分钟为单位,符号与UTC偏移相反)各不相同。
内容的提问来源于stack exchange,提问作者Mariusz Jamro
相关产品推荐
相关产品推荐

