【发布时间】:2018-10-15 03:20:52
【问题描述】:
所以在 Java 8 中如下:
DateTimeFormatter df = DateTimeFormatter.ofPattern("E d MMM yyyy");
当以这种方式应用时:
LocalDate date = LocalDate.now();
date.format(df);
会产生这样的东西:
"Available on Thu 30 Aug 2018"
但是,完全相同的代码在 Java 10 中运行时会产生以下结果:
"Available on Thu. 30 Aug. 2018"
注意日和月部分之后的句点...
我很清楚我可以只替换字符串中的句点,但我真的不想这样做。我想知道为什么会发生这种变化以及是否有替代模式?
我在网上找不到有关此更改的任何参考。
编辑:
根据 Basil 在下面的回答,这不是 Java 版本问题。这是一个语言环境问题。带有我的代码的 docker 映像在美国地区运行,而我的机器在澳大利亚地区运行 :)
【问题讨论】:
-
可能对语言环境的解释发生了变化。尝试
DateTimeFormatter.ofPattern("E d MMM yyyy").withLocale(Locale.US)或其他语言环境,看看是否可行。 -
I'm well aware I can just replace the periods in the string.... 你可能做不到;如果您最终要处理多个语言环境或其他一些因素,您最终可能会遇到不应该删除的嵌入句点。 -
如my Answer 所示,运行代码以记录您的JVM 版本和默认语言环境。通过编辑您的问题在此处报告。实际上,在这里显示 all
System属性会很有用。 -
这里是关于切换到默认使用 CLDR 数据的 JDK 9 发行说明:oracle.com/technetwork/java/javase/…
标签: java date datetime datetime-format java-10