2012-08-30 78 views
5

使用joda-time-2.0版本庫,我在想,哪個函數更適合從ISO日期構建(索引XML xs:dateTime格式)new DateTime(String)DateTime.parse(String)joda-time:new DateTime(String)vs DateTime.parse(String)

因爲無論從返回相同的值不同的結果。例如:

new DateTime("2012-08-16T07:22:05Z") 
DateTime.parse("2012-08-16T07:22:05Z") 

由於ISOC年代學的不同,結果不同。首先說的是ISOChronology[Europe/Paris]和第二ISOChronology[UTC],雖然毫秒是相同的。

此外,here推薦使用ISODateTimeFormat.dateTimeNoMillis(),給出與使用第一個版本(new)相同的結果。

+0

問題是什麼? – Ilya

+1

你使用的是什麼版本? –

+0

@Ilya用粗體編輯問題。雖然我這吼聲是一個晶瑩剔透的問題... – lucasvc

回答

12

這兩種方法使用兩種不同的轉換方法:構造使用的InstantConverter一個實例,其中在字符串的情況下是一個StringConverter並且還不支持讀取來自傳遞的字符串的時區,而parse方法使用知道如何解析時區的DateTimeFormatter

雖然在理論上這兩種格式接受ISO日期時間格式,我認爲構造函數是越野車,因爲它總是使用系統時區,而不是字符串中指定的一個。這與該構造函數接受的其他可能值不一致,這些值確實考慮了時區和時區偏移量。例如,此構造函數將返回UTC時區的DateTime對象:

new DateTime(DateTime.parse("2012-08-16T07:22:05Z")) 
+0

所以,這是更好地使用'DateTime.parse',對不對? – lucasvc

+0

構造函數是否真的被竊聽或是設計忽略的時區? – Scorpio

+0

因爲如果不是一個字符串,我們通過另一個JodaTime對象,確實有一個時區的時區也是不可忽視的,我會說這是一個錯誤,但它應該由開發商JodaTime確認。 –

相關問題