java.time.format.DateTimeParseException:Text' 2018-03-29 16:15:30' 无法在索引10处解析
max
答案 0 :(得分:1)
您使用模式“yyyy-MM-dd”(年 - 月 - 日)创建了DateTimeFormatter
,但您的输入还包含“hours:minutes:seconds”(2018-03-29 16:15:30
)。< / p>
但即使你使用了正确的模式,这仍然会引发异常:
// now the pattern matches the input
DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
OffsetDateTime date = OffsetDateTime.parse("2018-03-29 16:15:30", fmt); // DateTimeParseException
那是因为OffsetDateTime
也需要UTC偏移,而输入没有它。你有一些选择:
将其解析为LocalDateTime
:
DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime date = LocalDateTime.parse("2018-03-29 16:15:30", fmt);
如果你真的需要OffsetDateTime
,你必须为它选择一些偏移量。例如:
LocalDateTime date = // parse the LocalDateTime as above
// use offset +02:00
OffsetDateTime odt = date.atOffset(ZoneOffset.ofHours(2));
或者您可以在格式化程序中设置默认值:
DateTimeFormatter fmt = new DateTimeFormatterBuilder()
// date/time pattern
.appendPattern("yyyy-MM-dd HH:mm:ss")
// use some offset as default (0 is UTC)
.parseDefaulting(ChronoField.OFFSET_SECONDS, 0)
.toFormatter();
OffsetDateTime odt = OffsetDateTime.parse("2018-03-29 16:15:30", fmt);