尝试执行ZonedDateTime.parse时发生DateTimeParseException

尝试执行ZonedDateTime.parse时发生DateTimeParseException,datetime,java-8,date,Datetime,Java 8,Date,使用Java8U222,我一直在尝试一个愚蠢的操作,它导致了一个我无法完全理解的错误。行代码: ZonedDateTime.parse("2011-07-03T02:20:46+06:00[Asia/Qostanay]"); 错误: java.time.format.DateTimeParseException: Text '2011-07-03T02:20:46+06:00[Asia/Qostanay]' could not be parsed, unparsed text found at

使用Java8U222,我一直在尝试一个愚蠢的操作,它导致了一个我无法完全理解的错误。行代码:

ZonedDateTime.parse("2011-07-03T02:20:46+06:00[Asia/Qostanay]");
错误:

java.time.format.DateTimeParseException: Text '2011-07-03T02:20:46+06:00[Asia/Qostanay]' could not be parsed, unparsed text found at index 25
    at java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:1952)
    at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1851)
    at java.time.ZonedDateTime.parse(ZonedDateTime.java:597)
    at java.time.ZonedDateTime.parse(ZonedDateTime.java:582)
使用相同的日期(虽然时区可能不正确,但目的只是在这里进行测试),我更改了方括号的值,它可以工作,我的意思是:

ZonedDateTime.parse("2011-07-03T02:20:46+06:00[Europe/Busingen]);
它与其他值一样工作,例如:

ZonedDateTime.parse("2011-07-03T02:20:46+06:00[Asia/Ulan_Bator]")
ZonedDateTime.parse("2011-07-03T02:20:46+06:00[SystemV/CST6CDT]")
我发现了一些类似的问题,比如下面的一个,但与我正在尝试/面对的用法并不完全相同。

是否有人对Java Date API有一定的了解,可以帮助我理解我在这里做错了什么


谢谢。

亚洲/Qostanay
是JDK8时区列表中不存在的一个时区

如果您不关心时区的位置,那么只需在解析之前将字符串的
[…]
部分从末尾剪接即可。知道时间是
+06:00
对于几乎所有目的来说都足够了


或者,升级到较新版本的Java。

我想知道这是否足够(而不是完全升级到较新的Java版本)。@OleV.V。是的,会的。运行时的所有数据都来自
tzdata
,这就是该工具所指的更新。虽然我不知道这个工具存在,但我从来都不需要使用它。