tl; dr
String output =
LocalDate.now( ZoneId.of( "America/Montreal" ) )
.getDayOfWeek()
.getDisplayName( TextStyle.FULL , Locale.CANADA_FRENCH ) ;
java.time
Java 8以降に組み込まれ、Java 6および7とAndroidにバックポートされたjava.timeクラスには、便利なDayOfWeek
列挙型が含まれています。
日は、標準のISO 8601定義に従って番号が付けられ、月曜日から日曜日は1〜7です。
DayOfWeek dow = DayOfWeek.of( 1 );
この列挙型には、getDisplayName
その日のローカライズされた翻訳名の文字列を生成するメソッドが含まれています。
このLocale
オブジェクトは、翻訳に使用される人間の言語を指定し、大文字と句読点などの問題を決定するための文化的規範を指定します。
String output = DayOfWeek.MONDAY.getDisplayName( TextStyle.FULL , Locale.CANADA_FRENCH ) ;
今日の日付を取得するには、LocalDate
クラスを使用します。日付は世界中で変化するため、タイムゾーンは非常に重要です。
ZoneId z = ZoneId.of( "America/Montreal" );
LocalDate today = LocalDate.now( z );
DayOfWeek dow = today.getDayOfWeek();
String output = dow.getDisplayName( TextStyle.FULL , Locale.CANADA_FRENCH ) ;
ロケールはタイムゾーンとは何の関係もないことに注意してください。2つの別個の直交する問題。インドでゾーン化された日時のフランス語のプレゼンテーションが必要になる場合があります(Asia/Kolkata
)。
ジョーダタイム
更新:現在メンテナンスモードになっているJoda -Timeプロジェクトは、java.timeクラスへの移行をアドバイスしています。
ジョダタイムライブラリが提供Locale
日時値の駆動型局在を。
DateTimeZone zone = DateTimeZone.forID( "America/Montreal" );
DateTime now = DateTime.now( zone );
Locale locale = Locale.CANADA_FRENCH;
DateTimeFormatter formatterUnJourQuébécois = DateTimeFormat.forPattern( "EEEE" ).withLocale( locale );
String output = formatterUnJourQuébécois.print( now );
System.out.println("output: " + output );
出力:samedi
java.timeについて
java.timeフレームワークは、Java8以降に組み込まれています。これらのクラスは面倒古い取って代わるレガシーのような日付時刻クラスjava.util.Date
、Calendar
&を、SimpleDateFormat
。
ジョダタイムプロジェクトは、今でメンテナンスモードへの移行をアドバイスjava.timeのクラス。
詳細については、Oracleチュートリアルを参照してください。そして、StackOverflowで多くの例と説明を検索してください。仕様はJSR310です。
java.timeクラスはどこで入手できますか?