【发布时间】:2011-01-26 02:31:36
【问题描述】:
我的时区是 CET(柏林)。
在测试 Joda 的 DateTime 时,我注意到了一些奇怪的事情:
new DateTime(1893, 4, 1, 0, 0, 0, 0);
=> java.lang.IllegalArgumentException: Illegal instant due to time zone offset transition:
new DateTime(1893, 3, 31, 0, 0, 0, 0).toDate();
=> Fri Mar 31 00:06:32 CET 1893
时区偏移 6 分 32 秒导致时间不存在??
我必须说这是非常出乎意料的,因为我没有指定任何时区信息,因此没想到会遇到这种问题。
如果 1893 年 3 月 CET(柏林)不存在 - 为什么 new DateTime(1893, 3, 31, 0, 0, 0, 0) 不选择与我指定的时间(即 0 分 0 秒)匹配的时区?
我有哪些选择可以使用 DateTime 获取正确时间?
-- 编辑--
问题似乎是 toDate()。在发布问题之前,我已经将其编辑了。
Joda 本身实际上工作正常:
new DateTime(1893, 3, 31, 0, 0, 0, 0);
=> 1893-01-01T00:00:00.000+00:53:28
只是转换为 Date 将部分偏移量移动到分钟和秒中。
【问题讨论】: