如何使用 Joda DateTime 显示荷兰月份
How to show Dutch month using Joda DateTime
我正在尝试显示荷兰语月份。但是月份是用英文打印出来的。这需要从 Android API 19 及更高版本开始工作。
compile 'joda-time:joda-time:2.9.9'
val test = DateTime()
val l = Locale("nl_NL") // Dutch language, Netherlands country.
val f = DateTimeFormat.forPattern("dd MMM yyyy").withLocale(l)
val text = f.print(test)
打印出来:
26 Oct 2017
应该是:
26 Okt 2017
您必须使用 Locale
的 2-arg constructor,它在单独的参数中接收语言和国家/地区代码:
val l = Locale("nl", "NL")
有了这个,输出是:
26 okt 2017
在我的测试中,输出不是您想要的大写 Okt
,而是内置在 API 中,我们无法控制它。如果你想 Okt
作为输出,你必须自己操作字符串。
正确答案:
val l = Locale("nl", "NL")
val f = DateTimeFormat.forPattern("dd MMM yyyy").withLocale(l)
val dateStr = f.print(dateTime).substring(3, 4).toUpperCase()
val capitalizedDate = StringBuilder(f.print(dateTime))
capitalizedDate.setCharAt(3, dateStr[0])
return capitalizedDate.toString().replace(".", "")
我已经回答过类似的问题here。您可以使用 Calendar
对象获取本地化的月份名称。
private String getMonthName(final int index, final Locale locale, final boolean shortName)
{
String format = "%tB";
if (shortName)
format = "%tb";
Calendar calendar = Calendar.getInstance(locale);
calendar.set(Calendar.MONTH, index);
calendar.set(Calendar.DAY_OF_MONTH, 1);
return String.format(locale, format, calendar);
}
完整月份名称示例:
System.out.println(getMonthName(0, new Locale("NL"), false));
结果:januari
短月份名称示例:
System.out.println(getMonthName(2, new Locale("NL"), true));
结果:jan.
我正在尝试显示荷兰语月份。但是月份是用英文打印出来的。这需要从 Android API 19 及更高版本开始工作。
compile 'joda-time:joda-time:2.9.9'
val test = DateTime()
val l = Locale("nl_NL") // Dutch language, Netherlands country.
val f = DateTimeFormat.forPattern("dd MMM yyyy").withLocale(l)
val text = f.print(test)
打印出来:
26 Oct 2017
应该是:
26 Okt 2017
您必须使用 Locale
的 2-arg constructor,它在单独的参数中接收语言和国家/地区代码:
val l = Locale("nl", "NL")
有了这个,输出是:
26 okt 2017
在我的测试中,输出不是您想要的大写 Okt
,而是内置在 API 中,我们无法控制它。如果你想 Okt
作为输出,你必须自己操作字符串。
正确答案:
val l = Locale("nl", "NL")
val f = DateTimeFormat.forPattern("dd MMM yyyy").withLocale(l)
val dateStr = f.print(dateTime).substring(3, 4).toUpperCase()
val capitalizedDate = StringBuilder(f.print(dateTime))
capitalizedDate.setCharAt(3, dateStr[0])
return capitalizedDate.toString().replace(".", "")
我已经回答过类似的问题here。您可以使用 Calendar
对象获取本地化的月份名称。
private String getMonthName(final int index, final Locale locale, final boolean shortName)
{
String format = "%tB";
if (shortName)
format = "%tb";
Calendar calendar = Calendar.getInstance(locale);
calendar.set(Calendar.MONTH, index);
calendar.set(Calendar.DAY_OF_MONTH, 1);
return String.format(locale, format, calendar);
}
完整月份名称示例:
System.out.println(getMonthName(0, new Locale("NL"), false));
结果:januari
短月份名称示例:
System.out.println(getMonthName(2, new Locale("NL"), true));
结果:jan.