簡體   English   中英

ISOPeriodFormat.standard()。parsePeriod(“ 12:00:00”)異常

[英]ISOPeriodFormat.standard().parsePeriod(“12:00:00”) Exception

我嘗試使用參數“ 12:00:00”調用parsePeriod() ,它運行一個IllegalArgumentException。 我嘗試反編譯PeriodFormatter類和getParser().parseInto(localMutablePeriod, paramString, 0, iLocale); 這條線轉錯了。 有人可以告訴我原因嗎? 謝謝。

“ 12:00:00”不是正確的ISO 8601持續時間格式。 請參閱此處的格式說明: http : //en.wikipedia.org/wiki/ISO_8601#Durations

對於您的情況,如果您的意思是持續12小時,則參數應為“ PT12H0M0S”: ISOPeriodFormat.standard().parsePeriod("PT12H0M0S")

更改輸入以使其適應所使用的庫的功能通常不是一個選擇。 請注意,您的輸入與ISO不兼容,因為它至少缺少前綴PT(在替代的ISO-8601表示法中)。 因此,我建議采用以下方式:

PeriodFormatter pf =
  new PeriodFormatterBuilder()
  .appendHours().appendLiteral(":")
  .appendMinutes().appendLiteral(":")
  .appendSeconds().toFormatter();
System.out.println(pf.parsePeriod("12:00:00")); // PT12H

另外,我已經測試了這段代碼:

ISOPeriodFormat.alternateExtended().parsePeriod("P0000-00-00T12:00:00");

到目前為止,這是可行的,只需要在輸入前面加上必須更改輸入的缺點即可。 較短的前綴PT也是ISO兼容的,但Joda-Time不支持(在2.1版中測試)。

暫無
暫無

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

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