小编off*_*zaz的帖子

为什么 java8 中具有时区行为的 Instant.parse() 字符串与 java 17 不同

下面的代码片段

Instant.parse("2023-08-08T00:00:00+02:00")
Run Code Online (Sandbox Code Playgroud)

按照 java-17 中的预期进行编译和执行。但是用java-8执行时,抛出以下异常

java.time.format.DateTimeParseException: Text '2023-08-01T00:00:00+02:00' could not be parsed at index 19

    at java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:1949)
    at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1851)
    at java.time.Instant.parse(Instant.java:395)
    ...
Run Code Online (Sandbox Code Playgroud)

我的问题是为什么?java.time api 有什么变化吗?

请注意,我确实知道解决此问题的方法,以下代码适用于 java-8

OffsetDateTime.parse("2023-08-01T00:00:00+02:00", DateTimeFormatter.ISO_OFFSET_DATE_TIME).toInstant()
Run Code Online (Sandbox Code Playgroud)

它产生了期望的结果。我有兴趣知道在 java-time api 实现中,行为是否已经改变?

java timezone-offset java-8 java-time java-17

0
推荐指数
1
解决办法
145
查看次数

标签 统计

java ×1

java-17 ×1

java-8 ×1

java-time ×1

timezone-offset ×1