2014-07-04 71 views
1

我正在使用Joda Time庫打印出一個時間戳,並在大多數情況下,它正在工作。但是,當我創建一個新的DateTime的物體,像這樣的:新Joda DateTime對象,怪異TimeZone(-0752)

// leftThumbIndex corresponds to a RangeBar position 
DateTime startDateTime = new DateTime(1000, 1, 1, leftThumbIndex, 0, 0, 0); 

DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZ"); 
Log.e("start", formatter.print(startDateTime)); 

我打印出來的結果,這就是我得到:

1000-01-01T23:00:00.000-0752 

所以這是給我一個奇怪的時區。我認爲時區是以100爲單位的增量...即-0800,-0500等

這裏發生了什麼?

回答

1

問題來自您正在使用的中世紀日期。

Joda-Time默認情況下使用ISO年代表,這在1583年前的歷史日期是不準確的。如果你不需要使用歷史日期,默認的ISO年代表應該沒問題。

如果您確實想要使用歷史日期,您可以查看Julian年表,或者甚至更好的Gregorian-Julian年表。

此外,時區之間不一定有1小時的增量。有多個30分鐘和45分鐘的時差區分出there

+0

感謝您的快速響應! 'TimeZone'已被調整,但現在它顯示-0800,這是關閉了1個小時。應該是我假設的-0700是因爲夏令時。你知道這個問題的解決方法嗎?如果不是,不用擔心!再次感謝您的答案......從來沒有想過它! –

+1

確實很可能是夏令時,但不確定您爲什麼要解決這個問題。對於所有意圖和目的,這是一個正確的表示。 –