web-dev-qa-db-ja.com

Javaでロケールごとに日付をフォーマットするにはどうすればよいですか?

多くの言語を備えたアプリに日付をフォーマットする必要がありますが、日付をフォーマットする最良の方法は何ですか?国ごとに異なる種類の日付フォーマットがあるため、ロケールごとに日付をフォーマットすることは可能ですか?

26
newbie

はい、 DateFormat.getDateInstance(int style、Locale aLocale) を使用すると、現在の日付がロケール固有の方法で表示されます。

したがって、たとえば:

DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, yourLocale);
String formattedDate = df.format(yourDate);

スタイルパラメータの正確な意味については、ドキュメントを参照してください(SHORTMEDIUMなど)

59
Bozho

SimpleDateFormatにはロケールを取得するコンストラクターがありますが、試してみましたか?

http://Java.Sun.com/javase/6/docs/api/Java/text/SimpleDateFormat.html

new SimpleDateFormat("your-pattern-here", Locale.getDefault());のようなもの

13
laura

ジョーダタイム

Joda-Time 2.4ライブラリを使用します。 DateTimeFormatクラスは、DateTimeFormatterフォーマッタのファクトリです。そのクラスは、forStyleに適切なフォーマッタにアクセスするための Locale メソッドを提供します。

DateTimeFormatter formatter = DateTimeFormat.forStyle( "MM" ).withLocale( Java.util.Locale.CANADA_FRENCH );
String output = formatter.print( DateTime.now( DateTimeZone.forID( "America/Montreal" ) ) );

2文字の引数は、日付部分と時刻部分の形式を指定します。短いスタイルには「S」、長いスタイルには「M」、長いスタイルには「L」、完全なスタイルには「F」の文字を指定します。スタイル文字「-」HYPHENを指定すると、日付または時刻を省略できます。

ロケールとタイムゾーンの両方を指定したことに注意してください。この2つを混同する人もいます。

  • タイムゾーンは、UTCおよびからのオフセットであり、夏時間およびその他の異常とそれらの履歴の変更に関する一連のルールです。
  • ロケールは、Françaisなどの人間の言語に加えて、日時文字列の書式設定などの文化的慣習を表すカナダなどの国コードです。

日時値の文字列表現を適切に生成するには、これらすべての要素が必要です。

2
Basil Bourque

Java.text.DateFormat を見てください。使いやすい(少しパワーが少ない)派生クラス Java.text.SimpleDateFormat

Java国際化: http://Java.Sun.com/docs/books/tutorial/i18n/index.html (「問題に対処するフォーマット」など)。

1
Mihai Nita

Lauraと、Javaで日付を管理する最良の方法であるSimpleDateFormatに同意します。パターンとロケールを設定できます。さらに、これを見ることができます 世界の日付に関するウィキペディアの記事 -それを使用する方法はそれほど多くありません。通常は米国/中国/その他の地域-

1
Baztoune