【发布时间】:2011-10-12 16:36:28
【问题描述】:
我正在尝试为特定语言环境添加特定月份名称。 我遇到的问题是挪威博克马尔(nb)的语言环境,SimpleDateFormat返回的月份名称是英文而不是norweigan。但是似乎语言环境(否)工作正常
例如此代码结果为 1 月、2 月等。
String pattern = "MMMM";
DateFormat monthFormat = new SimpleDateFormat(pattern, new Locale("nb"));
Calendar cal = Calendar.getInstance();
for (int i = 0; i < 12; i++) {
cal.set(Calendar.MONTH, i);
System.out.println(monthFormat.format(cal.getTime()));
}
vs 此代码导致 Januar、Februar 等
String pattern = "MMMM";
DateFormat monthFormat = new SimpleDateFormat(pattern, new Locale("no"));
Calendar cal = Calendar.getInstance();
for (int i = 0; i < 12; i++) {
cal.set(Calendar.MONTH, i);
System.out.println(monthFormat.format(cal.getTime()));
}
我知道我可以使用特定的 DateFormatSymbols 配置 SimpleDateFormat,但这无助于让我的代码对任何未来的本地人都通用。我想知道是否有人知道如何修改受支持的 java 语言环境的默认月份值?我想会有一个可以添加的资源文件,但不知道如何添加。
【问题讨论】:
-
我碰巧查看了Locale class 的详细信息,看来您需要遵循this iso 标准。可能是您有一个有效常量列表,具体取决于它。顺便说一句,“nb”不是有效的语言常量,这就是为什么它没有被识别并且英语被视为默认值的原因
-
不太明白你想说什么,但你在谈论 i18n 和
ResourceBundle。如果是这样,那么这可能会有所帮助:stackoverflow.com/questions/4034661/… -
@Bhesh:OP 希望为特定语言定义自定义月份名称。 Java 没有support 语言
nb,因此它将默认为英文月份名称。这与ResourceBundleAPI 无关。 -
现在很老的问题 - 你找到解决方案了吗?
-
它可能会变得有点复杂,但从 Java 8 开始,您可能会看到
CalendarNameProvider是否可以帮助您。
标签: java