2

我有一个始终将日期存储为 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+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+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+0100 - 02:00
  • 1364698800 - 03:00 GMT+0100 - 03:00

现在,在我看来,最后 3 个日期是不正确的。

有任何想法吗?

这是一个小提琴:http: //jsfiddle.net/twilson/WRbyh/

4

1 回答 1

1

事实证明,机器在 BST 时间时未配置为自动更改时区以匹配日期。

结果在 4 月 6 日,它仍然被列为GMT Standard Time,而不是GMT Daylight Time

勾选 Automaticlly change 选项,修复了这个问题。

于 2013-03-06T11:33:01.067 回答