在我JDK-6 - 安裝我可以重現你的問題:
Date jud = new SimpleDateFormat("yyyy-MM-dd").parse("2014-02-28");
String month =
DateFormat.getDateInstance(SimpleDateFormat.LONG, new Locale("ru")).format(jud);
System.out.println(month); // output: 28 Февраль 2014 г.
的Java-8爲您提供了一個解決方案。
看來,JDK已將內部默認從「獨立式」(主格式)改爲「格式式」(格格式)。
String date =
DateTimeFormatter.ofLocalizedDate(FormatStyle.FULL)
.withLocale(new Locale("ru"))
.format(LocalDate.of(2014, 2, 28));
System.out.println(date); // output: 28 февраля 2014 г.
如果您需要申請獨立的文本樣式,那麼你必須建立自己的DateTimeFormatterBuilder
這需要多一點點的努力,否則TextStyle.FULL
應該是默認的。
String m = Month.FEBRUARY.getDisplayName(TextStyle.FULL , new Locale("ru"));
// февраля (first and last char are different)
String s = Month.FEBRUARY.getDisplayName(TextStyle.FULL_STANDALONE , new Locale("ru"));
// Февраль (this style can be used in DateTimeFormatterBuilder for the month field, too)
解決方法Java的前8使用舊的樣式:
定義自己的文本資源(麻煩)!
Locale russian = new Locale("ru");
String[] newMonths = {
"января", "февраля", "марта", "апреля", "мая", "июня",
"июля", "августа", "сентября", "октября", "ноября", "декабря"};
DateFormatSymbols dfs = DateFormatSymbols.getInstance(russian);
dfs.setMonths(newMonths);
DateFormat df = DateFormat.getDateInstance(DateFormat.LONG, russian);
SimpleDateFormat sdf = (SimpleDateFormat) df;
sdf.setDateFormatSymbols(dfs);
Date jud = new SimpleDateFormat("yyyy-MM-dd").parse("2014-02-28");
String month = sdf.format(jud);
System.out.println(month); // output: 28 февраля 2014 г.
喬達時間沒有提供在Java的前8環境,因爲它只能委託給JDK一個很好的解決方案。請參閱Joda-site上的類似問題。
最後還有我的圖書館Time4J可以解決像Java-8的問題,但使用它自己的文本資源,俄羅斯和理解兩種形式(舊風格和獨立式的),所以這是一個簡單的解決方案對於較老的Java版本(當然,由於許多其他功能增強,Java-8也不會過時)。
System.out.println(
PlainDate.formatter(DisplayMode.FULL, new Locale("ru")).format(
PlainDate.of(2014, Month.FEBRUARY, 28)
)
); // output: 28 февраля 2014 г.
如果二月份俄羅斯標籤的第一個字符在兩種情況下略有不同,那麼只選擇縮寫形式不能解決問題。 – 2014-10-30 08:26:21
這不是第一個字符,它是最後一個。如果變化改變了第一個字母,俄語將會是一個完全瘋狂的瘋狂語言! :-) – maksimov 2014-10-30 12:17:26
請再仔細看看角色。第一個字符是不同的(根據我的分析,代碼點1092與1060)雖然看起來非常相似。我相信這是關於大寫,但不太確定(俄語不是我的語言)。由於變形,最後的字符是不同的。在這裏,我們都同意。 – 2014-10-30 17:59:46