Javascript - Timezoneoffset和LocaleString是不同的

时间:2015-10-05 22:52:59

标签: javascript date

我在javascript中看到很多时区问题,但我没有找到一个具体如下。

当我在JS中使用新的Date()时,我从LocaleString获得了一个不同的时区。 我已经在一些浏览器中与同事一起测试了这个,有些行为还可以。

例如,在我的浏览器上我得到了:

new Date()
-> Mon Oct 05 2015 20:49:14 GMT-0200 (E. South America Daylight Time)

new Date().toLocaleString()
-> "10/5/2015, 7:50:11 PM"

正确的时间是晚上7:50。为什么他们的行为不同?而且最重要的是,我怎么能创建新的Date()但显示为19:50 GMT-0300? 我不想手动设置时区,因为我们有夏令时,在那段时间我将不得不更改代码。

提前致谢!

编辑:这不是白天的时间(巴西,圣保罗),正如浏览器在通过新的日期()创建时所说的那样

2 个答案:

答案 0 :(得分:0)

我猜.toLocaleString()方法结果取决于您的操作系统区域设置,语言和时区设置。例如,如果我设置了不同的日期时间格式,则您的脚本可能会在浏览器中失败。我建议使用像Moment.Js这样的库,与JS提供的本机功能相比,它提供了更好的时区处理和日期格式化程序功能。

在我的Chrome浏览器中,我得到了以下结果。我们2天前切换到夏令时:

enter image description here

答案 1 :(得分:0)

发布此处以防有人提出同样的问题.. 似乎是我的问题是Windows中的TZ变量设置为EST5EDT。这可能是导致这个问题的原因。当我将其设置为BST3这是我的时区时,即使使用“new Date()”,.toLocaleTimeStringAutomatically adjust timezone settings也会返回相同的时间(和正确的时间)。< / p>

现在我只需要确认当我进入白天时它是否也会起作用。