Java 8 DateTimeFormatter忽略毫秒和区域

时间:2018-02-16 00:20:57

标签: java datetime datetime-format java-time datetime-parsing

我正在努力使用Java 8 DateTimeFormatter

我想将给定的String转换为dateFormat并解析为LocalDateTime

这是我的代码

DateTimeFormatter f = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss")
String text = "2020-01-01T01:01:11.123Z"
LocalDateTime date = LocalDateTime.parse(text, f)

但Java抛出

  

无法解析文本,在索引19处找到未解析的文本

如果我将ofPattern更改为yyyy-MM-dd'T'HH:mm:ss.SSSX,我的代码会毫无错误地执行。 但我不想使用毫秒和时区。

1 个答案:

答案 0 :(得分:6)

请改为:

String text = "2020-01-01T01:01:11.123Z";
LocalDateTime date = ZonedDateTime.parse(text)
                                  .toLocalDateTime();

要删除毫秒信息,请执行以下操作:

LocalDateTime date = ZonedDateTime.parse(text)
                                  .truncatedTo(ChronoUnit.SECONDS)
                                  .toLocalDateTime();

您也可以使用OffsetDateTime代替ZonedDateTime