我在日光节约方面遇到了一个奇怪的问题。我有一个 Java 程序计划在每天上午 00:05 运行,但昨天它在 23:05 运行。我正在使用公历在 java 中安排这个程序。在此之前它从未在 23:05 运行,除非有人手动运行它。有谁知道这是否是日历的问题?
5 回答
该问题几乎可以肯定与夏令时切换有关,尽管奇怪的是它应该在午夜左右发生,因为 DST 切换通常发生在凌晨 2 点。
如果不知道您的机器设置的时区并查看您的实际代码,很难说更多。
不是跟夏令时有关吗?前一天晚上,世界某些地区的时间从夏令时更改为冬令时。
最好的猜测是,这是在旧版本的 Java 上运行的,它不恰当地认为夏令时在美国周日早上开始。
在内部,Java 将时间存储为 GMT 偏移量……特别是自 1970 年 1 月 1 日 00:00:00.000 GMT 以来的毫秒数(记录在Calendar
类的描述中)。
如果您不想更新 Java 本身,您仍然可以使用Timezone Updater Tool来更新系统上安装的 Java 时区。
注意:这应该在 Java 5u6 中得到修复,除非您处于此列表中提到的其他时区之一。
世界 DST 时间与北美 DST 时间有时不一致。
在欧洲,DST 在 10 月的最后一个星期日更改。 http://en.wikipedia.org/wiki/Daylight_saving_time_around_the_world#Europe
在北美,DST 在 11 月的第一个星期日更改。 http://en.wikipedia.org/wiki/Daylight_saving_time_around_the_world#North_America
由于评论提供更准确的信息而进行编辑。
我认为,它在 00:05 运行,但在“新”(冬季)时间是 23:05。