只是一些背景:我使用的是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:对于偏移量随时间变化的时区(例如欧洲/莫斯科,美国/印第安纳州),时区偏移量对于过去/将来的日期不正确