多くの言語を備えたアプリに日付をフォーマットする必要がありますが、日付をフォーマットする最良の方法は何ですか?国ごとに異なる種類の日付フォーマットがあるため、ロケールごとに日付をフォーマットすることは可能ですか?
はい、 DateFormat.getDateInstance(int style、Locale aLocale) を使用すると、現在の日付がロケール固有の方法で表示されます。
したがって、たとえば:
DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, yourLocale);
String formattedDate = df.format(yourDate);
スタイルパラメータの正確な意味については、ドキュメントを参照してください(SHORT
、MEDIUM
など)
SimpleDateFormatにはロケールを取得するコンストラクターがありますが、試してみましたか?
http://Java.Sun.com/javase/6/docs/api/Java/text/SimpleDateFormat.html
new SimpleDateFormat("your-pattern-here", Locale.getDefault());
のようなもの
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つを混同する人もいます。
日時値の文字列表現を適切に生成するには、これらすべての要素が必要です。
Java.text.DateFormat を見てください。使いやすい(少しパワーが少ない)派生クラス Java.text.SimpleDateFormat
Java国際化: http://Java.Sun.com/docs/books/tutorial/i18n/index.html (「問題に対処するフォーマット」など)。
Lauraと、Javaで日付を管理する最良の方法であるSimpleDateFormatに同意します。パターンとロケールを設定できます。さらに、これを見ることができます 世界の日付に関するウィキペディアの記事 -それを使用する方法はそれほど多くありません。通常は米国/中国/その他の地域-