Java Dateから月と年の情報だけを抽出してGUIに表示する必要があります。 この日付は、ユーザーロケールを使用して翻訳する必要があります。私は2つのローカライズされた日付をフォーマットするための方法を知っている :ロケールSIMPLIFIED_CHINESE
と日付2013-02-18
についてはnew SimpleDateFormat("yyyy M", locale).format(date)
Javaでロケール固有の書式設定の日付フィールドを抽出する方法は?
使用DateFormat.getInstance(DateFormat.LONG, locale).format(date)
- を、これは与える:
- 2013年2月18日
LONG
フォーマットを日(2013年2月)なしで使用する必要があります。 [変種2は、年月の順序がロケールの影響を受けないため、明らかに許容できません。 問題は次のようなものです。長い部分(18日)を日中の部分から削除する方法はありますか? 私はformat(Date date, StringBuffer toAppendTo, FieldPosition pos)
というメソッドを使ってみましたが、これは余分な文字ではなく数字の部分だけを抽出することができます。DateFormat.getInstance(DateFormat.LONG, Locale.SIMPLIFIED_CHINESE)
のパターンは、yyyy'年'M'月'd'日'
です。日の部分を抽出するとyyyy'年'M'月'
が得られます。 余分な文字(年
、月
、日
)は、対応するフィールドにはマッピングされていないようですが、フォーマッタのための他の意味がない文字なので、これを達成するためにJavaのDateFormat標準を使用することはできません。私は
DateFormatSymbols
とLocaleServiceProvider
を見ましたが、役に立たないと思います。 私にとっては、拡張のポイントはgetInstance(int style)
メソッドに別の日付スタイルを追加することです。しかし、それはすべてのロケールのためにそれを実装せずに可能ではないようです...この分析は正しいですか?どのようにこのフォーマットをクリーンな方法で達成するには?
+1:これを行う方法もわかりません。たぶんJodaTimeライブラリを代わりに試してみてください。 –
私は成功しなかった次のことを試しました: 'YearMonth.fromCalendarFields(cal).toString(DateTimeFormat.longDate()。withLocale(locale))'。 – Jidehem