2017-02-15 27 views
0

我正在使用喬達時間。我想比較2日期/時間A和B以確定B是否超過A.Android Joda時間 - 如何從文件加載UTC

問題 - 當我登錄A時,它不是UTC。當我logcat B它在UTC。因此比較不是真實的。

A - A UTC time loaded from a file 
B -The "System Time" in UTC 

代碼:

A - DateTime csvTime = new DateTime(inArray[5]) ; //inArray[x] is loaded from a file and has this format: 2017-02-10T01:09:00Z 
B - new DateTime(DateTimeZone.UTC) 

問題 - 如何加載inArray [5]因此它是真正的UTC與b的準確性進行比較?

在此先感謝,是的,我已經看過100多篇關於此的帖子。我還沒有找到一篇文章告訴我上面的A語法,如何在UTC內部存儲外部ISO 8601格式的日期。我玩過TimeZone默認設置爲強制Joda/JVMP默認TZ,但是這使我不得不指定我不想做的TimeZone。

回答

1

如果輸入已經在UTC(尾隨「Z」),那麼我建議你這樣分析它:

DateTime dt = 
    ISODateTimeFormat.dateTimeNoMillis().withOffsetParsed().parseDateTime(
     "2017-02-10T01:09:00Z" 
    ); 
System.out.println(dt); // 2017-02-10T01:09:00.000Z 

否則,您可以通過withZone(DateTimeZone.UTC)變換分析您的A-日期時間爲UTC。

+0

謝謝。 (dt)工作得很好。我很感激。最後一個問題......現在如何在我的android設置的本地時間/時區顯示dt? –

+1

@FrankZappa如何使用'withZone(DateTimeZone.getDefault())'?只要用戶沒有調整他/她的設備上的時鐘或系統區域,這就會工作。 –

+0

謝謝。我會嘗試。您是否有經驗序列化/反序列化包含Joda的DateTime字段的對象?我正在使用gson進行序列化。我的序列化工作正在進行,直到我將java日期更改爲Joda的DateTime,然後反序列化崩潰。所以我然後添加谷歌的DateTimeTypeConverter序列化/反序列化。它不再在序列化上崩潰,而是在反序列化時似乎時間已經改變。有什麼想法嗎? –