我的時區是CET(柏林)。
雖然測試Joda的日期時間,我注意到一些奇怪的事情:奇達日期時間01.04.1893
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
A 6分32秒,導致一個不存在的時間的時區位移Δλ
我必須說這是非常意外的,因爲我沒有指定任何時區信息,因此並不期望遇到這種問題。
如果在1893年3月CET(柏林)不存在 - 爲什麼new DateTime(1893, 3, 31, 0, 0, 0, 0)
選擇與我指定的時間(即0分鐘和0秒)相匹配的時區?
我可以通過DateTime獲得正確的時間嗎?
- 編輯 -
這個問題似乎是toDate()。在發佈問題之前,我編輯了它。
喬達本身其實正常工作:
new DateTime(1893, 3, 31, 0, 0, 0, 0);
=> 1893-01-01T00:00:00.000+00:53:28
這只是轉化爲日期移動偏移量分鐘和秒的一部分。
IOW:這不是一個錯誤,它是一個功能。從字面上看。 – 2010-03-10 21:16:24
感謝您的鏈接。我看到CET在那之前不存在。 我看到喬達實際上確實創建了日期。我的問題似乎與轉換爲java.util.Date不能很好地轉換(請參閱我的編輯)。但是這可能是Date比DateTime更多的問題。 – Stroboskop 2010-03-11 16:36:30