web-dev-qa-db-ja.com

Javaロケールの日付形式

特定のDateFormatLocaleを見つけるにはどうすればよいですか?

19
Mark
DateFormat.getDateInstance(int,Locale)

例えば:

import static Java.text.DateFormat.*;

DateFormat f = getDateInstance(SHORT, Locale.ENGLISH);

次に、このオブジェクトを使用してDatesをフォーマットできます。

String d = f.format(new Date());

基になるパターンを実際に知りたい場合(例:yyyy-MMM-dd)次に、SimpleDateFormatオブジェクトが返されるので:

SimpleDateFormat sf = (SimpleDateFormat) f;
String p1 = sf.toPattern();
String p2 = sf.toLocalizedPattern();
25
oxbow_lakes

tl; dr

DateTimeFormatter.ofLocalizedDateTime( FormatStyle.FULL )
                 .withLocale( Locale.CANADA_FRENCH );

Java.time

元の日時クラスは現在レガシーであり、Java.timeクラスに取って代わられています。

DateTimeFormatter には、日時値を表す文字列を生成するときに Locale によって自動的にローカライズする簡単な方法があります。 FormatStyle を指定して、出力の長さ(省略形かどうか)を示します。

DateTimeFormatter f = DateTimeFormatter.ofLocalizedDateTime( FormatStyle.FULL );
f = f.withLocale( Locale.CANADA_FRENCH );

現在の瞬間を取得します。 Localeとタイムゾーンは互いに関係がないことに注意してください。 1つはプレゼンテーションを決定し、もう1つは特定の 実時間 に調整します。したがって、ニュージーランドでLocaleの日本語のタイムゾーンを設定できます。この場合、インドのタイムゾーンで、ケベック人が読めるようにフォーマットされたプレゼンテーションを作成できます。

ZoneId z = ZoneId.of( "Asia/Kolkata" );
ZonedDateTime zdt = ZonedDateTime.now( z );

そのローカライズフォーマッタオブジェクトを使用して文字列を生成します。

String output = zdt.format( f );

Java.timeについて

Java.time フレームワークはJava 8以降に組み込まれています。これらのクラスは、厄介な古い legacy などの日時クラスに取って代わります。 Java.util.DateCalendar 、& SimpleDateFormat

Joda-Time プロジェクトは、現在 メンテナンスモード であり、 Java.time クラスへの移行をアドバイスします。

詳細については、 Oracleチュートリアル を参照してください。そして、StackOverflowで多くの例と説明を検索してください。仕様は JSR 31 です。

Java.timeクラスはどこで入手できますか?

ThreeTen-Extra プロジェクトは、Java.timeを追加のクラスで拡張します。このプロジェクトは、Java.timeに将来追加される可能性のある試験場です。 IntervalYearWeekYearQuarter などの便利なクラスがここにあります。 、および more

2
Basil Bourque