Java の LocalDate の withDayOfYear メソッド

JavaBeginner
オンラインで実践に進む

はじめに

この実験では、Java のLocalDateクラスのwithDayOfYear()メソッドを使って、年中の日付値を持つ日付を作成する方法を学びます。

Java ファイルを作成する

次のコードを持つ~/projectディレクトリの下にLocalDateWithDayOfYear.javaというファイルを作成します。

import java.time.LocalDate;

public class LocalDateWithDayOfYear {
    public static void main(String[] args) {
        System.out.println("Original date: ");
        LocalDate localDate = LocalDate.of(2002, 01, 10);
        System.out.println(localDate);
    }
}

次のコマンドを使ってコードをコンパイルして実行します。

javac LocalDateWithDayOfYear.java && java LocalDateWithDayOfYear

出力は元の日付が表示されるはずです。

Original date:
2002-01-10

withDayOfYear() を使って新しい年中の日付を設定する

年中の日付の新しい値を設定して新しい日付を作成するには、withDayOfYear() メソッドを使って日付の新しい日付を設定できます。

System.out.println(localDate); 行の後に次のコードを追加します。

// 年中の日付を 30 に設定
localDate = localDate.withDayOfYear(30);
System.out.println("年中の日付を 30 に設定した新しい日付:");
System.out.println(localDate);

// 年中の日付を 300 に設定
localDate = localDate.withDayOfYear(300);
System.out.println("年中の日付を 300 に設定した新しい日付:");
System.out.println(localDate);

次のコマンドを使ってコードをコンパイルして実行します。

javac LocalDateWithDayOfYear.java && java LocalDateWithDayOfYear

出力は新しい年中の日付値を持つ新しい日付が表示されるはずです。

Original date:
2002-01-10
New date with day-of-year set as 30:
2002-01-30
New date with day-of-year set as 300:
2002-10-27

無効な日付を処理する

結果として得られる日付が無効な場合、例外がスローされます。try-catch ブロックを使って例外を次のように処理できます。

try {
    // 年中の日付を 366 に設定(うるう年でない年には無効)
    localDate = localDate.withDayOfYear(366);
    System.out.println(localDate);
} catch (Exception e) {
    System.out.println("無効な日付:" + e.getMessage());
}

次のコマンドを使ってコードをコンパイルして実行します。

javac LocalDateWithDayOfYear.java && java LocalDateWithDayOfYear

出力は無効な日付例外のメッセージが表示されるはずです。

Original date:
2002-01-10
New date with day-of-year set as 30:
2002-01-30
New date with day-of-year set as 300:
2002-10-27
無効な日付: 無効な日付 'DayOfYear 366' として '2002' はうるう年ではありません

まとめ

この実験では、Java のLocalDateクラスのwithDayOfYear()メソッドを使って、年中の日付値を持つ日付を作成する方法を学びました。また、新しい年中の日付値を設定する際の無効な日付例外を処理する方法も学びました。