2013-10-30 145 views
6

当我尝试使用JavaScript中的Date()获取当前日期时,我遇到了奇怪的行为。 首先,我通过JS日期()返回正确的时区,但错误的日期

sudo ln -sf /usr/share/zoneinfo/Cuba /etc/localtime 

设置时区以古巴和另一个控制台运行node.js中跑Date()这是输出 -

> Date() 
'Thu Oct 31 2013 06:28:25 GMT+1100 (CDT)' 

上的更改时区,

sudo ln -sf /usr/share/zoneinfo/Asia/Vladivostok /etc/localtime 

并再次运行Date(),这是输出 -

> Date() 
'Thu Oct 31 2013 06:28:31 GMT+1100 (VLAT)' 

任何人都可以请解释为什么会发生这种情况和我怎样才能得到基于时区的时间?

+0

当你在做这个改变后在shell中运行'date'时会说什么? (我的意思是/ usr/bin/date,而不是node.js外壳) – glomad

+0

检查此链接,在这里它帮助[SO-问题](http://stackoverflow.com/questions/18450851/node-js-timezone-independant-日期 - 现在) –

+0

@ithcy,以下是它说的 - '[parin @ arch〜] $ date Thu Oct 31 06:39:59 VLAT 2013 [parin @ arch〜] $ date Wed Oct 30 15:40 :06 CDT 2013' –

回答

2

一些与操作系统时区乱搞和node表明,虽然node在运行时正确地拿起时区变化,它无法更新偏移。这就是为什么这两个日期显示GMT+1100

如果您重新启动节点,您会发现偏移量和时区都是正确的。我怀疑这是为了避免在运行过程中意外更改时间,但无法通过Google搜索找到任何相关内容。

+0

是在重新启动节点上,它显示正确的日期。但是,我想在JS脚本中显示时区更改的日期更改。我只是使用'node' shell来检查这个。 有没有办法从时区计算偏移量? –

+0

@ParinPorecha你期待在脚本运行期间更改时区? –

+1

是的。我想我应该更好地解释它 - 脚本是一个gnome-shell扩展,它显示一个时钟。因此,如果用户更改时间/时区,我希望时钟立即更新,而无需重新启动gnome-shell或计算机。 –

相关问题