相关疑难解决方法(0)

在 Java 中自定义区域设置

在 Java 中,Locale定义了与人们希望如何看待事物相关的事物(例如货币格式、月份名称以及一周的开始时间)。

当解析月份的名称(带有DateTimeFormatter)时,它开始变得棘手。

如果您使用Locale.USLocale.ENGLISH则九月有缩写形式Sep

如果您使用Locale.UK,那么 September 在 Java 11 中也有缩写形式Sep……但是当您尝试 Java 17 时,它就会有Sept(因为 Unicode CLDR 端发生了变化,我询问这是否正确)。

结果是,当我尝试使用 Java 17 进行构建时,我的测试开始失败。

我当前的代码使用Locale.UK而不是Locale.ENGLISH因为在Java中Locale.ENGLISH实际上不仅是英语,而且还是非ISO美国定义一周的方式(他们使用星期日作为一周的第一天)。我想以 ISO 方式获得它。

简单地:

  • WeekFields.ISO= WeekFields.of(Locale.UK)=WeekFields[MONDAY,4]
  • WeekFields.of(Locale.ENGLISH)= WeekFields.of(Locale.US)=WeekFields[SUNDAY,1]

因此,从 Java 17 开始,我还无法找到可以正常工作的内置语言环境。

在我看来,我必须选择Locale.ENGLISH并将9 月的简称更改为我需要的WeekFieldsLocale.UK

我的问题是如何做到这一点(在 Java 17 中)?

或者有更好的方法来解决这个问题吗?


更新1:

  • 我已经收到 Unicode 人员的反馈,表明 …

java locale datetime-parsing java-17

9
推荐指数
1
解决办法
1348
查看次数

标签 统计

datetime-parsing ×1

java ×1

java-17 ×1

locale ×1