Scala 日期解析 java LocalDateTime

Scala date parse with java LocalDateTime

我正在尝试使用 java LocalDateTime(在 Scala 中)以这种方式解析像这样的“2020-07-01T00:00:00Z”日期:

LocalDateTime.parse("2020-07-01T00:00:00Z", ISO_INSTANT)

但我遇到了这个异常:

java.time.format.DateTimeParseException: Text '2020-07-01T00:00:00Z' could not be parsed: Unable to obtain LocalDate from TemporalAccessor

这可能是什么问题?

这些是我的图书馆:

import java.time.format.DateTimeFormatter._
import java.time.LocalDateTime

您不应该使用 ISO_INSTANT 格式化程序,因为该格式化程序用于解析为 Instants,而您需要 LocalDateTime.

你应该使用另一个 DateTimeFormatter。这里有一些选择。所有这些都是 ISO_INSTANT 格式的“超集”。


或者,首先将字符串解析为 Instant,然后:

instant.atZone(ZoneOffset.UTC).toLocalDateTime()

您需要指定 LocalDateTime 相关的区域进行解析。

LocalDateTime.parse("2020-07-01T00:00:00Z",
        DateTimeFormatter.ISO_INSTANT.withZone(ZoneId.systemDefault()));

A LocalDateTime 不存储区域信息,但抽象地说,它无论如何都与一个区域相关。可以从同一个UTC时间戳解析出多个LocalDateTime,即特定(本地)时区的时间偏移量为added/subtracted.

不要误会ZonedDateTimeZonedDateTime 存储区域信息,因此它与 UTC 时间戳具有 1:1 关系。 UTC 时间戳与 LocalDateTime 有 1:n 关系。