はじめに
Java8のLocalDate
クラスは、日付値を操作するための複数のメソッドを提供します。そのようなメソッドの1つがwithMonth()
で、年の月を変更または設定した後の新しいLocalDate
インスタンスを返します。
💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください
Java8のLocalDate
クラスは、日付値を操作するための複数のメソッドを提供します。そのようなメソッドの1つがwithMonth()
で、年の月を変更または設定した後の新しいLocalDate
インスタンスを返します。
最初のステップは、JavaでLocalDate
インスタンスを作成することです。LocalDate
クラスはjava.time
パッケージにあるため、コードファイルの先頭にそのパッケージを含めます。LocalDate
クラスは、新しいLocalDate
インスタンスを作成できるof()
メソッドを提供します。
import java.time.LocalDate;
public class LocalDateWithMonthMethodExample {
public static void main(String[] args) {
// 新しいLocalDateインスタンスを作成
LocalDate date = LocalDate.of(2022, 10, 12);
// 元の日付を表示
System.out.println("Original Date: " + date);
}
}
次のコマンドを使用して、ターミナルでコードをコンパイルして実行します。
javac LocalDateWithMonthMethodExample.java && java LocalDateWithMonthMethodExample
withMonth()
メソッドは、年の月を引数として提供された値に設定した新しいLocalDate
インスタンスを返します。
withMonth()
メソッドを使用して、異なる年の月を設定し、新しく作成された日付を取得することができます。ここでは、年の月を4に設定して新しい日付を取得しています。
// 年の月を4に設定して新しい日付を取得
LocalDate newDate = date.withMonth(4);
// 新しい日付を表示
System.out.println("New Date: " + newDate);
以下が完全なコードです。
import java.time.LocalDate;
public class LocalDateWithMonthMethodExample {
public static void main(String[] args) {
// 新しいLocalDateインスタンスを作成
LocalDate date = LocalDate.of(2022, 10, 12);
// 元の日付を表示
System.out.println("Original Date: " + date);
// 年の月を4に設定して新しい日付を取得
LocalDate newDate = date.withMonth(4);
// 新しい日付を表示
System.out.println("New Date: " + newDate);
}
}
次のコマンドを使用して、ターミナルでコードをコンパイルして実行します。
javac LocalDateWithMonthMethodExample.java && java LocalDateWithMonthMethodExample
以下の出力が表示されるはずです。
Original Date: 2022-10-12
New Date: 2022-04-12
withMonth()
メソッドに渡される月の値が無効である場合、すなわち範囲[1, 12]外の場合、DateTimeException
がスローされます。
以下は、無効な月の値を処理する方法を示す例です。
import java.time.DateTimeException;
import java.time.LocalDate;
public class LocalDateWithMonthMethodExample {
public static void main(String[] args) {
// 新しいLocalDateインスタンスを作成
LocalDate date = LocalDate.of(2022, 10, 12);
// 元の日付を表示
System.out.println("Original Date: " + date);
try {
// 無効な月の値(13)を設定しようとする
LocalDate newDate = date.withMonth(13);
// 新しい日付を表示
System.out.println("New Date: " + newDate);
} catch(DateTimeException ex) {
System.out.println("Invalid month value provided: " + ex.getMessage());
}
}
}
次のコマンドを使用して、ターミナルでコードをコンパイルして実行します。
javac LocalDateWithMonthMethodExample.java && java LocalDateWithMonthMethodExample
以下の出力が表示されるはずです。
Original Date: 2022-10-12
Invalid month value provided: Invalid value for MonthOfYear (valid values 1 - 12): 13
withMonth()
メソッドは、年の月の値が新しい値に設定された新しいLocalDate
インスタンスを返し、元の日付インスタンスは変更されません。元の日付の年の月の値を変更したい場合は、withMonth()
が返す値を元の日付インスタンスに再割り当てする必要があります。例えば、以下のようになります。
// 元の日付インスタンスの年の月を変更する
date = date.withMonth(11);
// 更新された日付を表示
System.out.println("Updated Date: " + date);
以下が完全なコードです。
import java.time.LocalDate;
public class LocalDateWithMonthMethodExample {
public static void main(String[] args) {
// 新しいLocalDateインスタンスを作成
LocalDate date = LocalDate.of(2022, 10, 12);
// 元の日付を表示
System.out.println("Original Date: " + date);
// 年の月を5に設定して新しい日付を取得する
LocalDate newDate = date.withMonth(5);
// 新しい日付を表示
System.out.println("New Date: " + newDate);
// 元の日付インスタンスの年の月を変更する
date = date.withMonth(11);
// 更新された日付を表示
System.out.println("Updated Date: " + date);
}
}
次のコマンドを使用して、ターミナルでコードをコンパイルして実行します。
javac LocalDateWithMonthMethodExample.java && java LocalDateWithMonthMethodExample
以下の出力が表示されるはずです。
Original Date: 2022-10-12
New Date: 2022-05-12
Updated Date: 2022-11-12
月を変更する際に、その年において日付が無効な場合、その日付は新しい月の最終的な有効な日付に変更されます。例えば、うるう年において年の月を2月から4月に変更する場合、日付の値は自動的に4月の最終的な有効な日付に調整されます。
// 新しいLocalDateインスタンスを作成
LocalDate date = LocalDate.of(2024, 2, 29);
// 元の日付を表示
System.out.println("Original Date: " + date);
// 年の月を4月に設定
LocalDate newDate = date.withMonth(4);
// 新しい日付を表示
System.out.println("New Date: " + newDate);
以下が完全なコードです。
import java.time.LocalDate;
public class LocalDateWithMonthMethodExample {
public static void main(String[] args) {
// 新しいLocalDateインスタンスを作成
LocalDate date = LocalDate.of(2024, 2, 29);
// 元の日付を表示
System.out.println("Original Date: " + date);
// 年の月を4月に設定
LocalDate newDate = date.withMonth(4);
// 新しい日付を表示
System.out.println("New Date: " + newDate);
}
}
次のコマンドを使用して、ターミナルでコードをコンパイルして実行します。
javac LocalDateWithMonthMethodExample.java && java LocalDateWithMonthMethodExample
以下の出力が表示されるはずです。
Original Date: 2024-02-29
New Date: 2024-04-30
年の月の値が異なる日付のリストを生成するために、ループでwithMonth()
メソッドを使用することができます。以下は、2022年の各月に対応する日付を生成する例です。
// 2022年の各月に対応する日付を生成する
for (int month = 1; month <= 12; month++) {
LocalDate date = LocalDate.of(2022, month, 1);
System.out.println("Date for " + date.getMonth() + ": " + date);
}
以下が完全なコードです。
import java.time.LocalDate;
public class LocalDateWithMonthMethodExample {
public static void main(String[] args) {
// 2022年の各月に対応する日付を生成する
for (int month = 1; month <= 12; month++) {
LocalDate date = LocalDate.of(2022, month, 1);
System.out.println("Date for " + date.getMonth() + ": " + date);
}
}
}
次のコマンドを使用して、ターミナルでコードをコンパイルして実行します。
javac LocalDateWithMonthMethodExample.java && java LocalDateWithMonthMethodExample
以下の出力が表示されるはずです。
Date for JANUARY: 2022-01-01
Date for FEBRUARY: 2022-02-01
Date for MARCH: 2022-03-01
Date for APRIL: 2022-04-01
Date for MAY: 2022-05-01
Date for JUNE: 2022-06-01
Date for JULY: 2022-07-01
Date for AUGUST: 2022-08-01
Date for SEPTEMBER: 2022-09-01
Date for OCTOBER: 2022-10-01
Date for NOVEMBER: 2022-11-01
Date for DECEMBER: 2022-12-01
getMonthValue()
メソッドは、日付の年の月の値を取得するために使用されます。以下は、withMonth()
とgetMonthValue()
メソッドを使用して日付の年の月の値を変更し、取得する方法を示す例です。
// 新しいLocalDateインスタンスを作成
LocalDate date = LocalDate.of(2022, 11, 15);
// 元の日付を表示
System.out.println("Original Date: " + date);
// 年の月の値を取得
int originalMonthValue = date.getMonthValue();
// 年の月を10に変更
date = date.withMonth(10);
// 新しい年の月の値を取得
int newMonthValue = date.getMonthValue();
// 更新された日付と月の値を表示
System.out.println("Updated Date: " + date);
System.out.println("Original Month Value: " + originalMonthValue);
System.out.println("New Month Value: " + newMonthValue);
以下が完全なコードです。
import java.time.LocalDate;
public class LocalDateWithMonthMethodExample {
public static void main(String[] args) {
// 新しいLocalDateインスタンスを作成
LocalDate date = LocalDate.of(2022, 11, 15);
// 元の日付を表示
System.out.println("Original Date: " + date);
// 年の月の値を取得
int originalMonthValue = date.getMonthValue();
// 年の月を10に変更
date = date.withMonth(10);
// 新しい年の月の値を取得
int newMonthValue = date.getMonthValue();
// 更新された日付と月の値を表示
System.out.println("Updated Date: " + date);
System.out.println("Original Month Value: " + originalMonthValue);
System.out.println("New Month Value: " + newMonthValue);
}
}
次のコマンドを使用して、ターミナルでコードをコンパイルして実行します。
javac LocalDateWithMonthMethodExample.java && java LocalDateWithMonthMethodExample
以下の出力が表示されるはずです。
Original Date: 2022-11-15
Updated Date: 2022-10-15
Original Month Value: 11
New Month Value: 10
この実験では、withMonth()
メソッドを使用して、年の月が新しい値に設定されたLocalDate
インスタンスのコピーを作成する方法を学びました。また、無効な月の値を処理する方法と、getMonthValue()
メソッドを使用してLocalDate
インスタンスの年の月の値を取得する方法も学びました。withMonth()
メソッドは日付を操作するための便利なツールであり、年の各月に対応する日付のリストを生成するなど、多くの異なる方法で使用できます。