Java 日历返回月份名称的属格形式

4

我正在尝试在我的安卓应用程序中获取月份名称。

这是我的代码:

public static String getMonthString(Calendar calendar) {
    return DateFormat.format("MMMM", calendar.getTime()).toString();
}

主要问题在于,如果设定俄语设备语言,示例返回的名称采用属格。 而我需要获取主格中的名称。

"Январь" instead "Января"
"Февраль" instead "Февраля"
"Март" instead "Марта"

如果我设置英语语言代码,它可以正常工作。
"Janyary"
"Fabryary"
etc

请问有人能帮我吗?如何获取正确的名称?


你可以使用calendar.getDisplayName(Calendar.MONTH,Calendar.LONG, Locale.US)代替DateFormat.format。 - H Raval
H Raval,我尝试使用calendar.getDisplayName()方法。如果当前语言是俄语,该方法将返回属格名。但这对我没有用。之后我使用了Joda库,但问题仍然存在。我认为这是Android平台的特殊情况。我没有任何想法。 - AlexeyPecherey
这个问题已经过时了。解决这种问题的所有可能方法都在这个问题中讨论过了:Proper Russian month string translation Java - Fesswood
1个回答

3

如果您没有使用Java 8,应该使用"LLLL"而不是"MMMM"。 要获得您想要的内容,并使首字母大写,可以使用以下代码: String month = new SimpleDateFormat("LLLL",Locale.getDefault()).format(date); month = month.substring(0, 1).toUpperCase() + month.substring(1);


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接