はじめに
この実験(Lab)では、Java のLocalDateクラスのget()メソッドを使用して、日付から特定のフィールドを取得する方法を学びます。このメソッドは、特定のフィールド(月の何日目や週の何曜日など)だけを、与えられた日付から取得する必要がある場合に役立ちます。ChronoField列挙型を使用して、どのフィールドを取得するかを指定できます。
Java ファイルの作成
このステップでは、プロジェクトディレクトリにLocalDateGet.javaという名前の新しい Java ファイルを作成します。このファイルには、LocalDateクラスのget()メソッドをデモンストレーションするためのコードが含まれます。
WebIDE でターミナルを開きます。デフォルトのディレクトリは
~/projectです。touchコマンドを使用して、LocalDateGet.javaファイルを作成します。touch LocalDateGet.javaこのコマンドは、現在のディレクトリに空のファイルを作成します。ファイルの作成を確認するには、ファイルを一覧表示します。
ls出力に
LocalDateGet.javaが表示されるはずです。
必要なインポートとクラス構造の追加
次に、必要なインポート文とメインクラスの定義を含む、LocalDateGet.javaファイルに基本的な構造を追加します。これらのインポートは、Java で日付と時刻の API を操作するために不可欠です。
WebIDE のコードエディタで
LocalDateGet.javaファイルを開きます。ファイルに以下のコードを追加します。
import java.time.LocalDate; import java.time.temporal.ChronoField; import java.time.temporal.TemporalAccessor; import java.time.temporal.TemporalField; public class LocalDateGet { public static void main(String[] args) { // This is where we will call our methods later } }java.time.LocalDate: このクラスは、タイムゾーンのない日付を表します。java.time.temporal.ChronoField: この enum は、DAY_OF_MONTH、DAY_OF_WEEK、DAY_OF_YEARなど、日付と時刻の標準的なフィールドセットを提供します。java.time.temporal.TemporalAccessor: このインターフェースは、LocalDateなどの時間オブジェクトへの読み取り専用アクセスを提供します。get()メソッドはこのインターフェースで定義されています。java.time.temporal.TemporalField: このインターフェースは、年、月、または月の何日目などの日付と時間のフィールドを表します。ChronoFieldはこのインターフェースを実装しています。
コードを追加した後、
LocalDateGet.javaファイルを保存します。
月の日の取得
このステップでは、get()メソッドとChronoField.DAY_OF_MONTHを使用して、LocalDateオブジェクトから月の何日を取得するかをデモンストレーションするメソッドをLocalDateGetクラスに追加します。
WebIDE のコードエディタで
LocalDateGet.javaファイルを開きます。getDayOfMonth()メソッドをLocalDateGetクラス内、mainメソッドの外側に追加します。import java.time.LocalDate; import java.time.temporal.ChronoField; import java.time.temporal.TemporalAccessor; import java.time.temporal.TemporalField; public class LocalDateGet { public static void getDayOfMonth() { // Define the field to retrieve: DAY_OF_MONTH TemporalField field = ChronoField.DAY_OF_MONTH; // Create a LocalDate object for May 17, 2021 TemporalAccessor date = LocalDate.of(2021, 5, 17); // Display the original date System.out.println("Date : " + date); // Retrieve the day of the month using the get() method int val = date.get(field); // Display the retrieved day of the month System.out.println("Day of the month: " + val); System.out.println(); // Add a blank line for better readability } public static void main(String[] args) { // This is where we will call our methods later } }LocalDate.of(2021, 5, 17): 2021 年 5 月 17 日を表すLocalDateオブジェクトを作成します。ChronoField.DAY_OF_MONTH: 月の日付を取得することを指定します。date.get(field): これは操作の核心です。dateオブジェクトでget()メソッドを呼び出し、field(ChronoField.DAY_OF_MONTH)を渡して、対応する整数値を抽出します。
LocalDateGet.javaファイルを保存します。次に、このメソッドを
mainから呼び出して、実際に動作させてみましょう。mainメソッドを次のように変更します。public static void main(String[] args) { getDayOfMonth(); // Other methods will be called here later }ファイルをもう一度保存します。
ターミナルを開き、Java コードをコンパイルします。
javac LocalDateGet.javaエラーがない場合、コンパイルは静かに完了します。
コンパイルされた Java プログラムを実行します。
java LocalDateGet次のような出力が表示されるはずです。
Date : 2021-05-17 Day of the month: 17これにより、
getDayOfMonth()メソッドが月の何日を正しく抽出していることが確認できます。
曜日の取得
次に、週の曜日を取得する別のメソッドを追加します。ChronoField.DAY_OF_WEEKフィールドは週の曜日を表し、1 が月曜日、2 が火曜日、というように、7 が日曜日です。
WebIDE のコードエディタで
LocalDateGet.javaファイルを開きます。getDayOfWeek()メソッドをLocalDateGetクラス内、getDayOfMonth()メソッドの下に追加します。import java.time.LocalDate; import java.time.temporal.ChronoField; import java.time.temporal.TemporalAccessor; import java.time.temporal.TemporalField; public class LocalDateGet { // ... (getDayOfMonth method as defined previously) ... public static void getDayOfWeek() { // Define the field to retrieve: DAY_OF_WEEK TemporalField field = ChronoField.DAY_OF_WEEK; // Create a LocalDate object for May 17, 2021 (which was a Monday) TemporalAccessor date = LocalDate.of(2021, 5, 17); // Display the original date System.out.println("Date : " + date); // Retrieve the day of the week using the get() method int val = date.get(field); // Display the retrieved day of the week System.out.println("Day of the week: " + val); System.out.println(); // Add a blank line for better readability } public static void main(String[] args) { // ... (main method as defined previously) ... } }LocalDateGet.javaファイルを保存します。次に、この新しいメソッドを
mainメソッドから呼び出します。mainメソッドを次のように更新します。public static void main(String[] args) { getDayOfMonth(); getDayOfWeek(); // Call the new method // Other methods will be called here later }ファイルをもう一度保存します。
ターミナルから Java コードをコンパイルします。
javac LocalDateGet.javaコンパイルされた Java プログラムを実行します。
java LocalDateGet次のような出力が表示されるはずです。
Date : 2021-05-17 Day of the month: 17 Date : 2021-05-17 Day of the week: 12021 年 5 月 17 日は月曜日であり、
ChronoField.DAY_OF_WEEKは月曜日を 1 として表すため、出力Day of the week: 1は正しいです。
年の日の取得
最後に、年の日を取得するメソッドを追加します。ChronoField.DAY_OF_YEARフィールドは年の日を表し、1 が 1 月 1 日、というようになります。
WebIDE のコードエディタで
LocalDateGet.javaファイルを開きます。getDayOfYear()メソッドをLocalDateGetクラス内、getDayOfWeek()メソッドの下に追加します。import java.time.LocalDate; import java.time.temporal.ChronoField; import java.time.temporal.TemporalAccessor; import java.time.temporal.TemporalField; public class LocalDateGet { // ... (getDayOfMonth and getDayOfWeek methods as defined previously) ... public static void getDayOfYear() { // Define the field to retrieve: DAY_OF_YEAR TemporalField field = ChronoField.DAY_OF_YEAR; // Create a LocalDate object for May 17, 2021 TemporalAccessor date = LocalDate.of(2021, 5, 17); // Display the original date System.out.println("Date : " + date); // Retrieve the day of the year using the get() method int val = date.get(field); // Display the retrieved day of the year System.out.println("Day of the year: " + val); System.out.println(); // Add a blank line for better readability } public static void main(String[] args) { // ... (main method as defined previously) ... } }LocalDateGet.javaファイルを保存します。次に、この最後のメソッドを
mainメソッドから呼び出します。mainメソッドを次のように更新します。public static void main(String[] args) { getDayOfMonth(); getDayOfWeek(); getDayOfYear(); // Call the new method }ファイルをもう一度保存します。
ターミナルから Java コードをコンパイルします。
javac LocalDateGet.javaコンパイルされた Java プログラムを実行します。
java LocalDateGet年の日を含む完全な出力が表示されるはずです。
Date : 2021-05-17 Day of the month: 17 Date : 2021-05-17 Day of the week: 1 Date : 2021-05-17 Day of the year: 1372021 年 5 月 17 日は年の 137 日目であったため、出力
Day of the year: 137は正しいです。
まとめ
この実験(Lab)では、Java のLocalDateクラスのget()メソッドを使用して、日付から特定のフィールドを取得する方法を学びました。同じ日付(2021 年 5 月 17 日)の月の日の、週の日の、そして年の日を取得するプログラムを作成しました。get()メソッドをChronoField列挙型(enum)と組み合わせて使用することで、特定の日付コンポーネントを効率的に抽出でき、時間的データ(temporal data)を扱う際に Java プログラムをより正確にすることができます。



