Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么Chrome、Safari和Firefox中的getTimezoneOffset()和ToLocalString()都假设新加坡在时区GMT+;7.30?_Javascript_Google Chrome_Firefox_Safari_Timezone - Fatal编程技术网

Javascript 为什么Chrome、Safari和Firefox中的getTimezoneOffset()和ToLocalString()都假设新加坡在时区GMT+;7.30?

Javascript 为什么Chrome、Safari和Firefox中的getTimezoneOffset()和ToLocalString()都假设新加坡在时区GMT+;7.30?,javascript,google-chrome,firefox,safari,timezone,Javascript,Google Chrome,Firefox,Safari,Timezone,只是一些背景:我在OSX10.9.5上,我的时区设置为新加坡标准时间(GMT+8-我们这里没有夏令时,我相信我们过去也没有夏令时,因为新加坡就在赤道附近,所以白天的光线几乎没有季节性差异) 当我在Firefox控制台上尝试下面的javascript时,我得到的是: > new Date(0).toLocaleString() < "01/01/1970 7:30:00 am" > new Date(0).getTimezoneOffset() < -450 >新日期(0

只是一些背景:我在OSX10.9.5上,我的时区设置为新加坡标准时间(GMT+8-我们这里没有夏令时,我相信我们过去也没有夏令时,因为新加坡就在赤道附近,所以白天的光线几乎没有季节性差异)

当我在Firefox控制台上尝试下面的javascript时,我得到的是:

> new Date(0).toLocaleString()
< "01/01/1970 7:30:00 am"
> new Date(0).getTimezoneOffset()
< -450
>新日期(0)。toLocaleString()
<“1970年1月1日上午7:30:00”
>新日期(0)。getTimezoneOffset()
< -450
Firefox似乎把我的时区错当成了GMT+7.30

当我在Safari和Chrome控制台中尝试相同的东西时,我得到的是(两者都是):

>新日期(0)。toLocaleString()
<“1970年1月1日格林尼治标准时间上午7:30:00+7:30”
>新日期(0)。getTimezoneOffset()
< -480
同样,Safari和Chrome中的
toLocaleString()
似乎将时区误认为GMT+7.30;但是,
getTimezoneOffset()
正确地实现了这一点


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

日期是用
0
构建的,因此在
1970
中生成日期,并且:

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

因此字符串表示法是正确的

至于
getTimezoneOffset
差异,我认为Firefox使用了正确的行为;见(铬)

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