Java 入門レベル1 日付の操作

Javaでは、java.util.Dateおよびjava.util.Calendarなどのクラスを使用して日付を操作することができます。 Java8以降では、新しい日付と時刻API(java.time)が提供されています。 このAPIは日付の操作、形式、計算などを行うための強力な機能を提供しています。 今回は、Java8以降の日付操作を中心に勉強してみましょう。

※この記事は2023/06/22時点の情報です。

Java8以降
以下の例はjava.time.LocalDate、java.time.LocalTime、java.time.LocalDateTime使用して 現在の日付と時刻を取得し、さまざまな操作を行っています。このコードを実行すると、現在日時の取得、日付のフォーマット、 日付の加算・減算、日付の比較、日付の差分の計算などを実行します。

package test;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;

public class Test {

	public static void main(String[] args) {
		// 現在の日付と時刻を取得
		LocalDate currentDate = LocalDate.now();                //日付
		LocalTime currentTime = LocalTime.now();                //時刻
		LocalDateTime currentDateTime = LocalDateTime.now();    //日時
		//コンソールに出力
		System.out.println("現在の日付: " + currentDate);
		System.out.println("現在の時刻: " + currentTime);
		System.out.println("現在の日付と時刻: " + currentDateTime);
		
		// 日付のフォーマット
		DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
		// 現在の日時を"yyyy/MM/dd HH:mm:ss"のフォーマットに変換
		String formattedDate = currentDateTime.format(dateFormatter);
		//コンソールに出力
		System.out.println("フォーマットされた日付: " + formattedDate);
		
		// 日付の加算・減算
		LocalDate futureDate = currentDate.plusDays(7);		//7日プラス
		LocalDate pastDate = currentDate.minusWeeks(1);		//1週間マイナス
		//コンソールに出力
		System.out.println("1週間後の日付: " + futureDate);
		System.out.println("1週間前の日付: " + pastDate);
		
		// 日付の比較
		LocalDate date1 = LocalDate.of(2023, 6, 1);     //日付1  2023年6月1日
		LocalDate date2 = LocalDate.of(2023, 6, 15);    //日付2	 2023年6月15日
		// 日付の比較 (日付1が日付2よりも前か比較)
		if (date1.isBefore(date2)) {
		    //コンソールに出力
		    System.out.println("日付1は日付2よりも前の日付です");
		// 日付の比較 (日付1が日付2よりも後か比較)
		} else if (date1.isAfter(date2)) {
		    //コンソールに出力
		    System.out.println("日付1は日付2よりも後の日付です");
		// 日付1 = 日付2
		} else {
		    //コンソールに出力
		    System.out.println("日付と日付2は同じ日付です");
		}
		
		// 日付の差分
		long daysBetween = ChronoUnit.DAYS.between(date1, date2);
		//コンソールに出力
		System.out.println("日付の差分: " + daysBetween + "日");
	}
}

処理結果は次の通りです。

現在の日付: 2023-06-22
現在の時刻: 21:26:21.318528600
現在の日付と時刻: 2023-06-22T21:26:21.318528600
フォーマットされた日付: 2023/06/22 21:26:21
1週間後の日付: 2023-06-29
1週間前の日付: 2023-06-15
日付1は日付2よりも前の日付です
日付の差分: 14日

Java8より前のバージョン
Java8より前のバージョンでは、java.util.Dateおよびをjava.util.Calendar使用して日付を操作します。 Java8より前のバージョンで日付を操作をする例が以下になります。 この例では、java.util.Dateを使用して現在日時を取得し、java.text.SimpleDateFormatを使用して日付のフォーマットを行っています。 また、java.util.Calendarを使用して日付の加算・減算、比較、および日付の差分の計算を行っています。

package test;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class Test2 {

	public static void main(String[] args) {
		// 現在の日付と時刻を取得
		Date currentDate = new Date();
		// コンソールに出力
		System.out.println("現在の日付と時刻: " + currentDate);

		// 日付のフォーマット
		SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
		// 現在の日時を"yyyy/MM/dd HH:mm:ss"のフォーマットに変換
		String formattedDate = dateFormatter.format(currentDate);
		// コンソールに出力
		System.out.println("フォーマットされた日付: " + formattedDate);

		// 日付の加算・減算
		Calendar calendar = Calendar.getInstance();
		// 現在の日付をセット
		calendar.setTime(currentDate);
		// 7日プラス
		calendar.add(Calendar.DAY_OF_MONTH, 7);
		Date futureDate = calendar.getTime();
		// コンソールに出力
		System.out.println("1週間後の日付: " + futureDate);
		// 1週間マイナス
		calendar.add(Calendar.WEEK_OF_YEAR, -1);
		Date pastDate = calendar.getTime();
		// コンソールに出力
		System.out.println("1週間前の日付: " + pastDate);

		// 日付の比較
		Date date1 = createDate(2023, 6, 1);    //日付1  2023年6月1日
		Date date2 = createDate(2023, 6, 15);   //日付2	 2023年6月15日

		// 日付の比較
		int comparison = date1.compareTo(date2);
		// 日付1が日付2より小さい
		if (comparison < 0) {
		    // コンソールに出力
		    System.out.println("日付1は日付2よりも前の日付です");
		// 日付1が日付2よりも大きい
		} else if (comparison > 0) {
		    // コンソールに出力
		    System.out.println("日付1は日付2よりも後の日付です");
		// 日付1 = 日付2
		} else {
		    // コンソールに出力
		    System.out.println("日付1と日付2は同じ日付です");
		}

		// 日付の差分
		long millisecondsBetween = date2.getTime() - date1.getTime();
		// ミリ秒を日に変換
		long daysBetween = millisecondsBetween / (24 * 60 * 60 * 1000);
		// コンソールに出力
		System.out.println("日付の差分: " + daysBetween + "日");
	}

	/*
	 * 引数の年月日のカレンダーを生成し日付を返す
	 */
	private static Date createDate(int year, int month, int day) {
		// カレンダーのオブジェクトを実体化
		Calendar calendar = Calendar.getInstance();
		// カレンダーに引数の年月日をセット
		// ※カレンダーの月は0から始まるのでマイナス1する
		calendar.set(year, month - 1, day);
		// カレンダーの日付を返す
		return calendar.getTime();
	}
}

処理結果は次の通りです。

現在の日付と時刻: Thu Jun 22 21:57:35 JST 2023
フォーマットされた日付: 2023/06/22 21:57:35
1週間後の日付: Thu Jun 29 21:57:35 JST 2023
1週間前の日付: Thu Jun 22 21:57:35 JST 2023
日付1は日付2よりも前の日付です
日付の差分: 14日

どうでしょう?Javaのライブラリを使うと日付操作もすごく簡単ですよね! Java8以降になってますます使いやすくなっているので是非ともマスターしておきましょう!

ここまでJavaの日付操作について解説してきましたが理解できましたか?

Javaのif文を覚えられましたか?

まだ自信がないという人は積極的に自分で書いてみて少しずつ理解していくことが大切です。 日付の操作は頻繁に使用することになると思いますので確実にマスターしておきましょう!

管理人情報