2016-01-30 46 views
-1

我有這種格式的字符串「2015-11-18T00:00:00 + 0000」。我認爲這是一個ISO8601格式,並試圖將其解析到一個喬達DateTime實例,但它告訴我,它的格式不正確:ISODateTimeFormat.dateTime()。parseDateTime()can not parse 2015-11-18T00:00:00 + 0000

String toParse = "2015-11-18T00:00:00+0000"; 
DateTime date = ISODateTimeFormat.dateTime().parseDateTime(toParse); 

而且我得到了這個錯誤:

java.lang.IllegalArgumentException: Invalid format: "2015-11-18T00:00:00+0000" is malformed at "+0000"

我如何轉換以上字符串到DateTime

+6

[How to parse 2013-03-13T20:59:31 + 0000 date string to Date]可能的副本(http://stackoverflow.com/questions/15433377/how-parse-2013-03-13t2059310000-date-字符串到日期) – Malkus

+1

@Malkus不重複,至少與您給出的鏈接無關。這是喬達特有的問題,請參閱我的答案。 –

+0

@Malkus絕不是重複的,而是關於不同的框架 –

回答

3

方法ISODateTimeFormat.dateTime()需要一個毫秒的部分,它在輸入中缺失。解決方案:使用方法dateTimeNoMillis()

String input = "2015-11-18T00:00:00+0000"; 
DateTime dt = ISODateTimeFormat.dateTimeNoMillis().parseDateTime(input); 
System.out.println(dt); // 2015-11-18T01:00:00.000+01:00 (using offset of default timezone) 

如果你想保留的偏移量(+0000)包含在你的輸入,那麼你還需要調用withOffsetParsed()您格式化。

相關問題