DateTimeFormatter dd MMM yyyy 逐月打印 (2023 年 4 月 1 日) [重复]

DateTimeFormatter dd MMM yyyy prints period after month (01 Apr. 2023) [duplicate]

提问人:jBOSS 提问时间:4/1/2023 最后编辑:AnonymousjBOSS 更新时间:4/1/2023 访问量:469

问:

当我在服务器中运行下面的代码时,我会得到一个又一个月的周期。

DateTimeFormatter.ofPattern("dd MMM yyyy").format(LocalDate.parse("2023-04-01"))

01 Apr. 2023

有一个月又一个月的时期。

截屏

但是,当我在 java main 方法中运行时,相同的代码会产生预期的输出。

DateTimeFormatter.ofPattern("dd MMM yyyy").format(LocalDate.parse("2023-04-01"))

01 Apr 2023

第一次操作产生周期的原因是什么?

dateTimeFormatter 是否依赖于 Locale?

Java 时间 日期格式化 datetimeformatter

评论

0赞 kleopatra 4/1/2023
docs.oracle.com/en/java/javase/20/docs/api/java.base/java/time/......
0赞 Anonymous 4/1/2023
你是对的,这是区域设置的差异。也许带点的是德语或其他东西,没有点是英语或其他东西。指定所需的区域设置,例如 。Apr.AprDateTimeFormatter.ofPattern("dd MMM yyyy", Locale.ENGLISH)
1赞 Basil Bourque 4/1/2023
在发布之前,请务必彻底搜索 Stack Overflow。
0赞 jBOSS 4/4/2023
@BasilBourque这与 bugs.openjdk.java.net/browse/JDK-8211750 有关。

答:

1赞 jBOSS 4/1/2023 #1

它取决于区域设置。

当我使用 Locale.US 时,它会产生正确的结果

LocalDate.parse(“2023-01-01”).format(DateTimeFormatter.ofPattern(“dd MMM yyyy”, Locale.US))