为什么 Chrome、Safari 和 Firefox 中的 getTimezoneOffset() 和 toLocal



只是一些背景:我使用的是OS X 10.9.5,我的时区设置为新加坡标准时间(GMT+8 - 我们这里没有夏令时,我相信我们过去也从未有过,因为新加坡就在赤道旁边,所以日光几乎没有季节性差异)。

当我在 Firefox 控制台上尝试以下 JavaScript 时,这就是我得到的:

> new Date(0).toLocaleString()
< "01/01/1970 7:30:00 am"
> new Date(0).getTimezoneOffset()
< -450

似乎 Firefox 将我的时区误认为 GMT+7.30。

当我在 Safari 和 Chrome 控制台中尝试同样的事情时,这就是我得到的(对于两者):

> new Date(0).toLocaleString()
< "1 January, 1970 7:30:00 am GMT+7:30"
> new Date(0).getTimezoneOffset()
< -480

同样,Safari和Chrome中的toLocaleString()似乎将时区误认为GMT + 7.30; 但是getTimezoneOffset()做对了。

这些行为是分别在Firefox,Safari和Chrome中设计的(即它们背后有原因),还是它们只是错误?

日期是用0构造的,因此生成一个1970和历史的日期:

新加坡标准时间
与格林威治标准时间的时间偏移量:UTC+07:30
使用期间:1945年9月12日至1981年12月31日

所以字符串表示是正确的。

至于getTimezoneOffset差异,我会说Firefox使用正确的行为;请参阅(Chrome)问题3547:对于偏移量随时间变化的时区(例如欧洲/莫斯科,美国/印第安纳州),时区偏移量对于过去/将来的日期不正确

相关内容

  • 没有找到相关文章

最新更新