我在我的语言-捷克语中获取一个月的名称时遇到了问题。
我想要取月份的名字作为名词,但我总是得到变化的标题。我尝试了许多方法来获取名称,但所有方法都会返回月份名称的变形标题
例如,我想在捷克语中获得10月的名称"Říjen",但我总是得到"října“。
Calendar cal=Calendar.getInstance();
SimpleDateFormat month_date = new SimpleDateFormat("MMMMMMMMM");
String month_name = month_date.format(cal.getTime());
DateFormat formatData = new SimpleDateFormat("d.MMMM yyyy H:mm");
System.out.println(month_name);
System.out.println(String.format(Locale.getDefault(),"%tB", cal));
System.out.println(formatData.format(cal.getTime()));
对我来说,所有返回的格式都不正确。有没有办法得到正确的月份名称?谢谢
发布于 2014-11-19 22:14:46
您可能已经解决了这个问题,但以下是解决方案。我做了一些研究,原因是Java8中java.text.DateFormatSymbols
的变化(参见compatibility guide)。
格式化表单和独立表单是有区别的。格式形式: ledna,u-nora,b-řezna等;独立形式: leden,u-nor,b-ř-ezen等。
根据语言规则,当月份单独出现时,它的名称以较低的字符开头,除非它是句子的开头。
此代码将为您提供所需的结果。
public static void main(String[] args) {
Calendar cal = Calendar.getInstance();
Locale loc = new Locale("cs", "CZ");
System.out.println(cal.getDisplayName(Calendar.MONTH, Calendar.LONG_STANDALONE, loc));
}
发布于 2017-05-21 20:58:23
最后,我找到了这个问题的最佳解决方案。问题是"MMMM“格式用于月份的”格式化名称“(f.e."ledna")。如果您需要一个“独立名称”月份(f.e."leden"),则需要使用"LLLL“。可在此处找到完整的日期格式文档:
https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html
下面是一个简单的例子:
DateFormat.format("LLLL yyyy", date).toString().capitalize() // returns: Leden
2016
和
DateFormat.format("MMMM yyyy", date).toString() // returns ledna 2016
此解决方案适用于所有API。
https://stackoverflow.com/questions/19466180
复制相似问题