2011-01-31 103 views
1

我不明白,爲什麼下面的代碼行不與喬達時間工作:無效的格式錯誤

DateTime now = new DateTime(); 
DateTimeFormatter dateTimeFormatter = DateTimeFormat. 
               forPattern("yyyyMMddhhmmss Z"); 
System.out.println(dateTimeFormatter.print(now)); 
DateTime d = x.parseDateTime("200906031633 -0300"); 

我得到這個錯誤:

java.lang.IllegalArgumentException: Invalid format: "200006031633 -0300" is malformed at " -0300" at org.joda.time.format.DateTimeFormatter.parseDateTime(DateTimeFormatter.java:683)

是什麼奇怪的是,System.out.prinln(dateTimeFormatter.print(now));它很好,並根據模式打印: 20110131101805 +0100

什麼問題?從我在Joda Time's pattern syntax上看到的情況來看,這種模式似乎是正確的。

謝謝!

+0

謝謝你們!多麼愚蠢的錯誤:)謝謝你的幫助,我想如果沒有它,我會浪費一個小時。 – ovdsrn 2011-01-31 22:13:13

回答

2

首先,如果你希望它能夠解析值應使用「HH」而不是「HH」:如果我添加秒到如下圖所示它的工作原理。其次,你還需要在值中包含秒。

E.g.

DateTime d = dateTimeFormatter.parseDateTime("20090603163300 -0300"); 
+0

你的意思是秒而不是毫秒正確 – 2011-01-31 21:55:49

2

問題是,你缺少秒鐘在200906031633 -0300。 (200906031633「00」 -0300)所有模式的

DateTimeFormatter dateTimeFormatter = DateTimeFormat.forPattern("yyyyMMddHHmmss Z");  
DateTime d = dateTimeFormatter.parseDateTime("20090603163300 -0300"); 
相關問題