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
格式化程序,因为该格式化程序用于解析为 Instant
s,而您需要 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.
不要误会ZonedDateTime
。 ZonedDateTime
存储区域信息,因此它与 UTC 时间戳具有 1:1 关系。 UTC 时间戳与 LocalDateTime
有 1:n 关系。
我正在尝试使用 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
格式化程序,因为该格式化程序用于解析为 Instant
s,而您需要 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.
不要误会ZonedDateTime
。 ZonedDateTime
存储区域信息,因此它与 UTC 时间戳具有 1:1 关系。 UTC 时间戳与 LocalDateTime
有 1:n 关系。