为什么这个时间不能被DateTimeFormatter.ofPattern()解析?

Tha*_*Guy 0 java localtime java-8

当我运行以下命令时:

String s2 = "07:05:45PM";
LocalTime time = LocalTime.parse(s2, DateTimeFormatter.ofPattern("HH:mm:ssa"));
Run Code Online (Sandbox Code Playgroud)

我得到:

Exception in thread "main" java.time.format.DateTimeParseException:
Text '07:05:45PM' could not be parsed at index 8
Run Code Online (Sandbox Code Playgroud)

它似乎不喜欢 AM/PM 指示符,但据我所知,这应该有效。我究竟做错了什么?

Ell*_*sch 6

您正在使用 24 小时格式的说明符(并在 0700 处说 AM)。使用hh代替HH。喜欢,

LocalTime time = LocalTime.parse(s2, DateTimeFormatter.ofPattern("hh:mm:ssa"));
Run Code Online (Sandbox Code Playgroud)

  • @ernest_k:我认为逻辑非常清晰:24 小时时钟上的 16 和 PM 并不相互矛盾。24 小时制的 04 和 PM 确实相互矛盾。接受奇怪但有效模式的内部一致数据。同一模式的内部冲突数据将被拒绝。看起来很明智。类似地,“Sunday, 26. 2. 2020”不是有效日期,但“Wednesday, 26. 2. 2020”是有效日期。 (3认同)