簡體   English   中英

Java-將字符串轉換為ISO 8601日期格式錯誤Joda-Time

[英]Java - Convert string to ISO 8601 date format error Joda-Time

我正在嘗試使用Joda-Time將應用程序用戶以String形式輸入的日期轉換為ISO 8601格式,因此我正在使用以下代碼,但出現錯誤:

String oldDate = "05/05/2013";
DateTime oldD = DateTime.parse(oldDate);
DateTimeFormatter OldDFmt = ISODateTimeFormat.dateTime();
String str = OldDFmt.print(oldD);
System.out.println(str);

但我總是出錯:

org.springframework.web.util.NestedServletException:請求處理失敗; 嵌套的異常為java.lang.IllegalArgumentException:無效的格式:“ 05/05/2013”​​的格式為“ / 05/2013”

有人可以幫忙告訴我我在做什么錯嗎? 謝謝。

有人可以幫忙告訴我我在做什么錯嗎?

錯誤發生在這里。

DateTime oldD = DateTime.parse(oldDate);

DateTime.parse(String)方法使用ISODateTimeFormat.dateTimeParser()解析String參數。

格式必須為以下格式

 datetime          = time | date-opt-time
 time              = 'T' time-element [offset]
 date-opt-time     = date-element ['T' [time-element] [offset]]
 date-element      = std-date-element | ord-date-element | week-date-element
 std-date-element  = yyyy ['-' MM ['-' dd]]
 ord-date-element  = yyyy ['-' DDD]
 week-date-element = xxxx '-W' ww ['-' e]
 time-element      = HH [minute-element] | [fraction]
 minute-element    = ':' mm [second-element] | [fraction]
 second-element    = ':' ss [fraction]
 fraction          = ('.' | ',') digit+
 offset            = 'Z' | (('+' | '-') HH [':' mm [':' ss [('.' | ',') SSS]]])

你的

String oldDate = "05/05/2013";

不是。

您需要使用解析器來解析String日期,解析器具有相應的格式,如Paul Hicks所建議的那樣。 然后,您可以將創建的DateTime格式化為ISO標准格式。

您用來解析字符串DateTime.parse(oldDate)的格式化程序是默認格式器:根據javadocs ISODateTimeFormat.dateTimeParser() 您需要一個解析DateTimeFormatter ,它知道您的字符串格式dd/mm/yyyy 我不使用joda-time,但我認為您需要這樣做:

DateTimeFormatter stringParser = DateTimeFormat.forPattern("dd/MM/yyyy");

其余代碼看起來還不錯。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM