TL; DR
LocalDate.now() // Capture the date-only value current in the JVM’s current default time zone.
.getYear() // Extract the year number from that date.
java.time両方java.util.Date
とjava.util.Calendar
クラス
は今java.timeフレームワークに取って代わらレガシー、ジャワに組み込まれています8以降。
タイムゾーンは、日付を決定する際に重要です。任意の瞬間について、日付は地球の周りでゾーンごとに異なります。たとえば、Paris Franceの真夜中の数分後には、新しい日がありますが、まだ「昨日」はMontréal Québecです。
タイムゾーンが指定されていない場合、JVMは現在のデフォルトタイムゾーンを暗黙的に適用します。そのデフォルトはいつでも変更される可能性がありますので、結果は異なる場合があります。期待どおりのタイムゾーンを明示的に引数として指定する方がよいでしょう。
は、America/Montreal
、Africa/Casablanca
、又はPacific/Auckland
として、continent/region
の形式でproper time zone nameを指定します。 EST
またはIST
のような3〜4文字の略語は、ではなく、のように、標準化されておらず、ユニークではない(!)と使用しないでください。
ZoneId z = ZoneId.of("Africa/Tunis") ;
あなたは時間帯、使用LocalDate
せずに日付のみをしたい場合。このクラスにはタイムゾーン情報がありませんが、現在の日付を決定するタイムゾーンを指定できます。
ZoneId zoneId = ZoneId.of("America/Montreal");
LocalDate localDate = LocalDate.now(zoneId);
あなたはgetYear
、getMonth
、そしてgetDayOfMonth
で各種情報を取得することができます。あなたは実際にjava.timeを使って年番号を取得します!
int year = localDate.getYear();
あなたは、日時の代わりに、日付だけをしたい場合は、ZonedDateTime
クラスを使用します。
ZonedDateTime zdt = ZonedDateTime.now(zoneId) ;
java.timeについて
java.timeフレームワークは、Java 8に組み込まれており、後にされています。これらのクラスは、java.util.Date
、.Calendar
、& java.text.SimpleDateFormat
などの面倒な古い日時クラスに取って代わります。
にあるJoda-Timeプロジェクトは、java.timeクラスへの移行を推奨しています。
Oracle Tutorialを参照して、詳細をご覧ください。そして、多くの例と説明のためにStack Overflowを検索してください。 java.time機能の多く
はThreeTen-BackportのJava 6 &のJava 7に戻って、移植し、さらに(How to use…参照)ThreeTenABPにAndroidに適合されます。
ThreeTen-Extraプロジェクトは、追加のクラスでjava.timeを拡張します。このプロジェクトは、将来のjava.timeへの追加の可能性を証明する土台です。ここでは、Interval
、YearWeek
、YearQuarter
、moreなどの便利なクラスがあります。
+1 for JodaTime – dnault
完全にbizaare仕様の正しい実装! –
これはY2Kバグですか? – jumpnett