我正在尝试将以下时间戳解析为ZonedDateTime
:
Sun Jan 20 16:08:59 +0000 2019
我喜欢避免使用尽可能在字符串中定义的模式,因为我经常忘记字符代表的含义(“呵呵,是一年中的'M'月,还是小时的分钟...?”)
在下面的示例中,如何摆脱表示区域偏移量的模式“ xxxx”?我尝试了appendOffsetId
,但是它使用了不同的模式,因此解析失败。
有更好的方法吗?
DateTimeFormatter formatter = new DateTimeFormatterBuilder()
.appendText(ChronoField.DAY_OF_WEEK, TextStyle.SHORT)
.appendLiteral(' ')
.appendText(ChronoField.MONTH_OF_YEAR, TextStyle.SHORT)
.appendLiteral(' ')
.appendValue(ChronoField.DAY_OF_MONTH, 1, 2, SignStyle.NEVER)
.appendLiteral(' ')
.appendValue(ChronoField.HOUR_OF_DAY, 2)
.appendLiteral(':')
.appendValue(ChronoField.MINUTE_OF_HOUR, 2)
.appendLiteral(':')
.appendValue(ChronoField.SECOND_OF_MINUTE, 2)
.appendLiteral(' ')
.appendPattern("xxxx") // How do I change this?
.appendLiteral(' ')
.appendValue(ChronoField.YEAR, 4)
.toFormatter();
System.out.println(
ZonedDateTime.parse("Sun Jan 20 16:08:59 +0000 2019", formatter)
);
答案 0 :(得分:3)
您可以使用appendOffset而不是appendOffsetId。第一个参数是一个模式,但不是DateTimeFormatter模式;实际上,它限制为22个可能的String值:
.appendOffset("+HHMM", "????")