はじめに
Java 8 で導入された Java LocalDate クラスは、タイムゾーンを持たない日付を表すために使用されます。このクラスは、日付オブジェクトに対して日付の加算や減算、月や年の加算や減算などの操作を行うためのさまざまなメソッドを提供しています。これらの便利なメソッドの 1 つは、指定されたタイムゾーンに基づいて現在の日付を返す now(ZoneId) メソッドです。
Java ファイルを作成する
~/project ディレクトリに、LocalDateNowZoneId.java という名前の新しい Java ファイルを作成します。
cd ~/project
touch LocalDateNowZoneId.java
必要なパッケージをインポートする
LocalDate クラスと ZoneId クラスを使用するには、java.time.LocalDate と java.time.ZoneId パッケージをインポートする必要があります。
import java.time.LocalDate;
import java.time.ZoneId;
既定のシステムタイムゾーンで現在日付を取得する
既定のシステムタイムゾーンで現在の日付を取得するには、LocalDate クラスの now() メソッドを使用できます。また、既定のシステムタイムゾーンを取得するために、ZoneId の systemDefault() メソッドも使用します。
LocalDate localDate = LocalDate.now(ZoneId.systemDefault());
System.out.println("Current date with default system time-zone: " + localDate);
指定されたタイムゾーンで現在日付を取得する
指定されたタイムゾーンで現在の日付を取得したい場合は、now() メソッドにタイムゾーンを引数として渡すことができます。この例では、タイムゾーン「Asia/Tokyo」を渡して東京のタイムゾーンで現在の日付を取得します。
LocalDate localDate = LocalDate.now(ZoneId.of("Asia/Tokyo"));
System.out.println("Current date in Tokyo time-zone: " + localDate);
利用可能なタイムゾーンを取得する
使用可能なタイムゾーンを表示するには、ZoneId クラスの getAvailableZoneIds() メソッドを使用できます。
System.out.println("Available time-zones:");
ZoneId.getAvailableZoneIds().forEach(System.out::println);
コードをコンパイルして実行する
ターミナルで javac と java コマンドを使用して、コードをコンパイルして実行できます。
javac LocalDateNowZoneId.java
java LocalDateNowZoneId
まとめ
この実験では、Java の LocalDate のnow(ZoneId)メソッドを使用して、指定されたタイムゾーンのシステムクロックから現在の日付を取得する方法を学びました。また、利用可能なタイムゾーンを取得する方法と、コードでこれらのタイムゾーンを使用する方法も学びました。



