2014-06-27 66 views
0

我得到了日期格式yyyy-MM-dd'T'hh:mm:ss.SSS'Z'的問題,總是當我解析某個日期的時間設置爲12:00:00.000日期格式和小時始終是12:00:00.000

這是我的日期格式化器:

DateFormat xmlDateFormatWithMs = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss.SSS'Z'"); 
+10

你解析的字符串是什麼? –

+0

嗯看來,這取決於HH格式,因爲Ludo6431表示 – PDS

回答

1

你似乎需要24小時小時格式。您需要:

"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'" 

用資本HH來指定您需要24小時制。

1

TL;博士

Instant.parse("2016-09-27T18:33:39Z") 

詳細

另一個解決方案是,因爲它們是出了名的麻煩,以避免使用舊SimoleDateFormat和java.util.Date類。

喬達時間

直接通過您的ISO 8601兼容字符串喬達時間:

DateTime dateTime = new DateTime(myString); 

java.time

或者,最好在java.time。 Joda-Time項目現在處於維護模式,並建議遷移到java.time。

Instant類表示UTC中時間軸上的一個時刻,分辨率爲nanoseconds。這意味着最多九(9)位小數部分。

Instant instant = Instant.parse("2016-09-27T18:33:39Z"); 

要調整到其他偏移或時區,搜索棧溢出了OffsetDateTimeZonedDateTime類。

關於java.time

java.time框架是建立在Java 8和更高版本。這些類取代的麻煩舊日期,時間類,如java.util.Date.Calendar,& java.text.SimpleDateFormat

Joda-Time項目現在位於maintenance mode,建議遷移到java.time。請參閱Oracle Tutorial。並搜索堆棧溢出了很多例子和解釋。

大部分的java.time功能後移植到Java 6 和ThreeTenABP還適於Android(見How to use…)。

ThreeTen-Extra項目擴展java.time與其他類。這個項目是未來可能增加java.time的一個試驗場。

相關問題