はじめに
このチュートリアルでは、Java の LocalDate クラスを使用して現在の日付を取得し、次の日付を計算する方法を説明します。Java 8 で導入された Java Time API は、包括的な日付と時刻の処理機能を提供します。このチュートリアルを終える頃には、LocalDate を使用して基本的な日付操作を効率的に実行する方法を理解できるようになります。
このチュートリアルでは、Java の LocalDate クラスを使用して現在の日付を取得し、次の日付を計算する方法を説明します。Java 8 で導入された Java Time API は、包括的な日付と時刻の処理機能を提供します。このチュートリアルを終える頃には、LocalDate を使用して基本的な日付操作を効率的に実行する方法を理解できるようになります。
コーディングを始める前に、LocalDate クラスについて、そして Java アプリケーションで日付を扱う際にそれがなぜ役立つのかを学びましょう。
Java 8 では、古い日付と時刻のクラスの制限に対処するために、java.time パッケージに Java Time API が導入されました。この API は、日付と時刻の処理に対するより明確で直感的なアプローチを提供します。
LocalDate クラスは、時刻コンポーネント(年、月、日)を持たない日付を表します。これは不変であり、スレッドセーフであり、ISO-8601 カレンダーシステムに従います。
LocalDate を使用する主な利点には、以下が含まれます。
LocalDate の機能を探索するために、新しい Java ファイルを作成しましょう。
DateExample.java とし、「OK」をクリックしますpublic class DateExample {
public static void main(String[] args) {
// We will add our date code here
System.out.println("Learning about LocalDate in Java");
}
}
Java ファイルを作成したので、次のステップで現在の日付を操作するコードを追加します。
このステップでは、LocalDate クラスを使用して現在の日付を取得し、表示するように Java プログラムを変更します。
まず、java.time パッケージから LocalDate クラスをインポートする必要があります。 DateExample.java ファイルを開き、先頭にインポート文を追加します。
import java.time.LocalDate;
public class DateExample {
public static void main(String[] args) {
// We will add our date code here
System.out.println("Learning about LocalDate in Java");
}
}
LocalDate クラスは、現在の日付を返す now() という静的メソッドを提供します。現在の日付を取得して表示するようにコードを変更しましょう。
import java.time.LocalDate;
public class DateExample {
public static void main(String[] args) {
// Get the current date
LocalDate currentDate = LocalDate.now();
// Display the current date
System.out.println("Current date: " + currentDate);
}
}
次に、プログラムをコンパイルして実行しましょう。
cd /home/labex/project
javac DateExample.java
java DateExample
次のような出力が表示されるはずです。
Current date: 2023-04-12
実際の日付は、プログラムを実行した現在の日付を反映します。
LocalDate オブジェクトのデフォルトの文字列表現は、ISO-8601 形式 YYYY-MM-DD に従います。これは、日付を表すための国際標準です。
たとえば、2023-04-12 は 2023 年 4 月 12 日を表します。
LocalDate クラスを使用して、現在の日付を取得して表示することに成功しました。次のステップでは、次の日付を計算する方法を学びます。
現在の日付を取得できるようになったので、LocalDate オブジェクトに日数を加算して、次の日付を計算する方法を学びます。
LocalDate クラスは、以下を含む、日付操作のためのいくつかのメソッドを提供します。
plusDays(long days): 指定された日数を加算しますplusWeeks(long weeks): 指定された週数を加算しますplusMonths(long months): 指定された月数を加算しますplusYears(long years): 指定された年数を加算します減算用の対応する minus メソッドもあります。
次の日付を計算して表示するようにコードを強化しましょう。
import java.time.LocalDate;
public class DateExample {
public static void main(String[] args) {
// Get the current date
LocalDate currentDate = LocalDate.now();
// Calculate the next date by adding one day
LocalDate nextDate = currentDate.plusDays(1);
// Display both dates
System.out.println("Current date: " + currentDate);
System.out.println("Next date: " + nextDate);
}
}
更新されたプログラムをコンパイルして実行しましょう。
DateExample.java への変更を保存したことを確認してくださいjavac DateExample.java
java DateExample
次のような出力が表示されるはずです。
Current date: 2023-04-12
Next date: 2023-04-13
ここでも、実際の日付は、プログラムを実行した現在の日付を反映します。
他の日付操作メソッドを実演するために、プログラムをさらに強化しましょう。
import java.time.LocalDate;
public class DateExample {
public static void main(String[] args) {
// Get the current date
LocalDate currentDate = LocalDate.now();
// Calculate various future dates
LocalDate nextDate = currentDate.plusDays(1);
LocalDate nextWeek = currentDate.plusWeeks(1);
LocalDate nextMonth = currentDate.plusMonths(1);
LocalDate nextYear = currentDate.plusYears(1);
// Display all dates
System.out.println("Current date: " + currentDate);
System.out.println("Next date: " + nextDate);
System.out.println("Date after one week: " + nextWeek);
System.out.println("Date after one month: " + nextMonth);
System.out.println("Date after one year: " + nextYear);
}
}
プログラムをもう一度コンパイルして実行します。
javac DateExample.java
java DateExample
出力には、現在の日付、次の日付、および 1 週間後、1 か月後、1 年後の日付が表示されます。
Current date: 2023-04-12
Next date: 2023-04-13
Date after one week: 2023-04-19
Date after one month: 2023-05-12
Date after one year: 2024-04-12
plusDays() の結果を新しい変数に代入したことに注意してください。これは、LocalDate オブジェクトが不変であるためです。つまり、作成後にその値を変更することはできません。 plusDays() のようなメソッドは、元のオブジェクトを変更しません。代わりに、更新された値を持つ新しいオブジェクトを返します。
この不変性は、LocalDate オブジェクトをスレッドセーフにし、複雑なアプリケーションでより予測可能にする重要な機能です。
このステップでは、LocalDate オブジェクトから、日、月、年、曜日などの個々のコンポーネントを抽出する方法を学びます。
LocalDate クラスは、日付の特定のコンポーネントを抽出するためのいくつかのメソッドを提供します。
getDayOfMonth(): 月の日(1~31)を返しますgetMonthValue(): 月を数値(1~12)として返しますgetMonth(): 月を enum 定数として返しますgetYear(): 年を返しますgetDayOfWeek(): 曜日を enum 定数として返しますこれらのメソッドを探索するために、新しいファイルを作成しましょう。
DateComponents.java という名前の新しいファイルを作成しますimport java.time.LocalDate;
import java.time.Month;
import java.time.DayOfWeek;
public class DateComponents {
public static void main(String[] args) {
// Get the current date
LocalDate currentDate = LocalDate.now();
// Extract date components
int day = currentDate.getDayOfMonth();
int monthValue = currentDate.getMonthValue();
Month month = currentDate.getMonth();
int year = currentDate.getYear();
DayOfWeek dayOfWeek = currentDate.getDayOfWeek();
// Display the components
System.out.println("Current date: " + currentDate);
System.out.println("Day of month: " + day);
System.out.println("Month (number): " + monthValue);
System.out.println("Month (name): " + month);
System.out.println("Year: " + year);
System.out.println("Day of week: " + dayOfWeek);
}
}
次に、新しいプログラムをコンパイルして実行しましょう。
javac DateComponents.java
java DateComponents
次のような出力が表示されるはずです。
Current date: 2023-04-12
Day of month: 12
Month (number): 4
Month (name): APRIL
Year: 2023
Day of week: WEDNESDAY
現在の日付を取得することに加えて、of() メソッドを使用して、特定の日付を表す LocalDate オブジェクトを作成できます。特定の日付を作成するようにプログラムを強化しましょう。
import java.time.LocalDate;
import java.time.Month;
import java.time.DayOfWeek;
public class DateComponents {
public static void main(String[] args) {
// Get the current date
LocalDate currentDate = LocalDate.now();
// Create a specific date
LocalDate specificDate = LocalDate.of(2025, 12, 25);
// Extract date components from the current date
int day = currentDate.getDayOfMonth();
int monthValue = currentDate.getMonthValue();
Month month = currentDate.getMonth();
int year = currentDate.getYear();
DayOfWeek dayOfWeek = currentDate.getDayOfWeek();
// Display the current date components
System.out.println("Current date: " + currentDate);
System.out.println("Day of month: " + day);
System.out.println("Month (number): " + monthValue);
System.out.println("Month (name): " + month);
System.out.println("Year: " + year);
System.out.println("Day of week: " + dayOfWeek);
// Display the specific date
System.out.println("\nSpecific date: " + specificDate);
System.out.println("Day of week for specific date: " + specificDate.getDayOfWeek());
}
}
更新されたプログラムをコンパイルして実行します。
javac DateComponents.java
java DateComponents
出力には、特定の日付に関する情報が含まれるようになります。
Current date: 2023-04-12
Day of month: 12
Month (number): 4
Month (name): APRIL
Year: 2023
Day of week: WEDNESDAY
Specific date: 2025-12-25
Day of week for specific date: THURSDAY
これで、LocalDate オブジェクトからコンポーネントを抽出し、特定の日付を作成する方法を学びました。これらの機能は、日付ベースの操作を実行したり、さまざまな形式で日付情報を表示したりする必要があるアプリケーションを構築する際に特に役立ちます。
このチュートリアルでは、Java Time API の LocalDate クラスを使用して、Java で日付を操作する方法を学びました。ここでは、達成した内容の概要を示します。
LocalDate.now() を使用して現在の日付を取得する Java プログラムを作成しましたLocalDate.of() メソッドを使用して特定の日付を作成しましたこれらの基本的な日付操作は、Java アプリケーションにおけるより複雑な日付ベースの機能の基盤となります。Java Time API は、日付と時刻を操作するための包括的なクラスとメソッドのセットを提供し、アプリケーションで日付関連の要件を簡単に処理できるようにします。
習得した知識の一般的な応用例には、以下が含まれます。
Java の学習を続ける中で、タイムゾーンの操作、さまざまな地域の日付のフォーマット、複雑な日付計算の実行など、Java Time API のより高度な機能を探索できます。