我有一个始终将日期存储为 UTC 的网络应用程序,但它们需要分别以 GMT/BST 的形式显示给用户。
我有一个 UTC/GMT 日期(2013 年 3 月 30 日 22:00),我每小时移动一次以跨越 GMT/BST 边界。我正在使用 setTime()
方法处理日期。
所以,我输入的时间戳、显示时间、UTC时间如下:
- 1364808000 - 22:00 GMT+0000 - 22:00
- 1364685500 - 23:00 GMT+0000 - 23:00
- 1364688000 - 00:00 GMT+0000 - 00:00
- 1364691600 - 02:00 GMT+0100 - 01:00
- 1364695200 - 03:00 GMT+0100 - 02:00
- 1364698800 - 04:00 GMT+0100 - 03:00
当机器处于 GMT 时,它输出:
- 1364808000 - 22:00 GMT+0000 - 22:00
- 1364685500 - 23:00 GMT+0000 - 23:00
- 1364688000 - 00:00 GMT+0000 - 00:00
- 1364691600 - 02:00 GMT+0100 - 01:00
- 1364695200 - 03:00 GMT+0100 - 02:00
- 1364698800 - 04:00 GMT+0100 - 03:00
当机器处于 BST 时,它输出:
- 1364808000 - 22:00 GMT+0000 - 22:00
- 1364685500 - 23:00 GMT+0000 - 23:00
- 1364688000 - 00:00 GMT+0000 - 00:00
- 1364691600 - 00:00 GMT+0000 - 01:00
- 1364695200 - 02:00 GMT+0100 - 02:00
- 1364698800 - 03:00 GMT+0100 - 03:00
现在,在我看来,最后 3 个日期不正确。
有什么想法吗?
这是一个 fiddle :http://jsfiddle.net/twilson/WRbyh/
最佳答案
事实证明,机器在 BST 时间时未配置为自动更改时区以匹配日期。
因此,4 月 6 日仍被列为GMT 标准时间,而不是GMT 夏令时。
勾选自动更改选项,解决了这个问题。
关于BST 机器上的 Javascript GMT/BST 日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15245704/