2 回答

TA貢獻(xiàn)1890條經(jīng)驗(yàn) 獲得超9個(gè)贊
AnOffsetDateTime需要一個(gè)時(shí)間,但是您的格式字符串不提供該時(shí)間,因此您需要DateTimeFormatter將默認(rèn)時(shí)間設(shè)置為午夜。
此外,偏移量+3:00無效,因?yàn)樾r(shí)必須為2位數(shù),這意味著您需要先對其進(jìn)行修復(fù)。
這將同時(shí)做到:
public static OffsetDateTime parse(String text) {
// Fix 1-digit offset hour
String s = text.replaceFirst("( [+-])(\\d:\\d\\d)$", "$10$2");
DateTimeFormatter formatter = new DateTimeFormatterBuilder()
.appendPattern("uuuu-MM-dd xxx")
.parseDefaulting(ChronoField.HOUR_OF_DAY, 0)
.toFormatter();
return OffsetDateTime.parse(s, formatter);
}
測試
System.out.println(parse("2018-07-22 +3:00"));
System.out.println(parse("2018-07-22 +03:00"));
System.out.println(parse("2007-07-21 +00:00"));
輸出
2018-07-22T00:00+03:00
2018-07-22T00:00+03:00
2007-07-21T00:00Z
添加回答
舉報(bào)