在 Java 的 DateTimeFormatter 模式中无法识别 MESZ

MESZ is not recognized in the pattern of DateTimeFormatter of Java

提问人:Vishal 提问时间:3/25/2023 最后编辑:AnonymousVishal 更新时间:3/26/2023 访问量:87

问:

LocalDateTime time = LocalDateTime.parse("27. April 2021 00:03:50 MESZ", DateTimeFormatter.ofPattern("dd. MMMM yyyy HH:mm:ss z"));

尝试解析时间字符串,如上所示。模式中的“z”无法识别“MESZ”时区。

有人可以告诉我是否必须使用任何其他模式来匹配“MESZ”吗?

时区 java-time 日期时间 - 解析 datetimeformatter

评论

0赞 Gereon 3/25/2023
MESZ不在标准的时区名称列表中,尽管它在德国经常使用。您可能需要特殊情况来替换它。CEST
1赞 Vishal 3/26/2023
谢谢@Gereon。我也找到了我必须使用的答案Locale.Germany
1赞 Anonymous 3/26/2023
不要解析为 here。您的字符串包含您要选取的时区缩写。所以使用 .如果需要,您可以随时进行转换,并在转换中考虑时区,但在大多数情况下,您不需要这样做。LocalDateTimeZonedDateTime
0赞 Anonymous 3/26/2023
这回答了你的问题吗?java DateTimeFormatterBuilder 在测试时失败

答:

2赞 Vishal 3/26/2023 #1

我找到了答案。我必须将 DateTimeFormatter 与 Locale 一起使用

DateTimeFormatter FORMATTER = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.LONG).withLocale(Locale.GERMANY);
LocalDateTime time = LocalDateTime.parse("27. April 2021 00:03:50 MESZ", FORMATTER);

评论

0赞 Anonymous 3/26/2023
一个非常好的解决方案。它使我们完全不必摆弄任何格式的模式字符串。