特定のDateFormat
のLocale
を見つけるにはどうすればよいですか?
DateFormat.getDateInstance(int,Locale)
例えば:
import static Java.text.DateFormat.*;
DateFormat f = getDateInstance(SHORT, Locale.ENGLISH);
次に、このオブジェクトを使用してDate
sをフォーマットできます。
String d = f.format(new Date());
基になるパターンを実際に知りたい場合(例:yyyy-MMM-dd
)次に、SimpleDateFormat
オブジェクトが返されるので:
SimpleDateFormat sf = (SimpleDateFormat) f;
String p1 = sf.toPattern();
String p2 = sf.toLocalizedPattern();
DateTimeFormatter.ofLocalizedDateTime( FormatStyle.FULL )
.withLocale( Locale.CANADA_FRENCH );
元の日時クラスは現在レガシーであり、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 8以降に組み込まれています。これらのクラスは、厄介な古い legacy などの日時クラスに取って代わります。 Java.util.Date
、 Calendar
、& SimpleDateFormat
。
Joda-Time プロジェクトは、現在 メンテナンスモード であり、 Java.time クラスへの移行をアドバイスします。
詳細については、 Oracleチュートリアル を参照してください。そして、StackOverflowで多くの例と説明を検索してください。仕様は JSR 31 です。
Java.timeクラスはどこで入手できますか?
ThreeTen-Extra プロジェクトは、Java.timeを追加のクラスで拡張します。このプロジェクトは、Java.timeに将来追加される可能性のある試験場です。 Interval
、 YearWeek
、 YearQuarter
などの便利なクラスがここにあります。 、および more 。