Java 日時を比較するサンプル

Javaの日時を比較するサンプルです。

目次

日時の比較 日にちを比較する(LocalDate)
  時間を比較する(LocalDateTime)
  日にちを比較する(Date)
  日にちを比較する(Calendar)

日にちを比較する(LocalDate)

public boolean isAfter(ChronoLocalDate other)
public boolean isBefore(ChronoLocalDate other)
public boolean isEqual(ChronoLocalDate other)

LocalDateクラスで日にちを比較するサンプルです。

package test1;
import java.time.LocalDate;

public class Test1 {
	public static void main(String[] args) {

		LocalDate date1 = LocalDate.of(2020,8,3);
		LocalDate date2 = LocalDate.of(2020,7,30);
		
		boolean d1 = date1.isAfter(date2);
		System.out.println(d1); // true
		
		boolean d2 = date1.isBefore(date2);
		System.out.println(d2); // false
		
		boolean d3 = date1.isEqual(date2);
		System.out.println(d3); // false
		
		LocalDate date3 = LocalDate.of(2020,8,3);
		LocalDate date4 = LocalDate.of(2020,8,3);
		
		boolean d4 = date3.isEqual(date4);
		System.out.println(d4); // true
 	}
}

7行目は、2020年8月3日を意味します。
8行目は、2020年7月30日を意味します。
10行目は、isAfterメソッドです。A>Bのときにtrueになります。
13行目は、isBeforeメソッドです。A<Bのときにtrueになります。
16行目は、isAfterメソッドです。A=Bのときにtrueになります。

時間を比較する(LocalDateTime)

LocalDateTimeクラスで時間を比較するサンプルです。

package test1;
import java.time.LocalDateTime;
import java.time.LocalTime;

public class Test1 {
	public static void main(String[] args) {

		LocalDateTime date1 = LocalDateTime.of(2020,8,3,15,20,10);
		LocalDateTime date2 = LocalDateTime.of(2020,8,3,14,50,10);
		
		boolean d1 = date1.isAfter(date2);
		System.out.println(d1); // true
		
		boolean d2 = date1.isBefore(date2);
		System.out.println(d2); // false
		
		boolean d3 = date1.isEqual(date2);
		System.out.println(d3); // false
		
		LocalTime date3 = LocalTime.of(15,20,10);
		LocalTime date4 = LocalTime.of(14,50,10);
		
		boolean d4 = date3.isAfter(date4);
		System.out.println(d4); // true
 	}
}

7行目は、2020年8月3日15時20分10秒を意味します。
8行目は、2020年7月30日14時50分10秒を意味します。
11行目は、isAfterメソッドです。A>Bのときにtrueになります。
14行目は、isBeforeメソッドです。A<Bのときにtrueになります。
17行目は、isAfterメソッドです。A=Bのときにtrueになります。
20,21行目は、LocalTimeクラスです。時間のみで比較する場合使用できます。

以下は、Java8 API仕様のLocalDateTimeクラスのリンクです。
https://docs.oracle.com/javase/jp/8/docs/api/java/time/LocalDateTime.html

日にちを比較する(Date)

Dateクラスで日にちを比較するサンプルです。

package test1;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Test1 {
	public static void main(String[] args) {

		SimpleDateFormat sdformat1  = new SimpleDateFormat("yyyyMMdd");
		Date date1,date2;
		try {
			date1 = sdformat1.parse("20200803");
			date2 = sdformat1.parse("20190730");
			
			boolean d1 = date1.after(date2);
			System.out.println(d1); // true
			
			boolean d2 = date1.before(date2);
			System.out.println(d2); // false
			
			boolean d3 = date1.equals(date2);
			System.out.println(d3); // false
			
			if (date1.compareTo(date2) > 0){ //afterと同じ
				System.out.println("trueです"); // trueです
			}
			
		} catch (ParseException e) {
			e.printStackTrace();
		}
 	}
}

12行目は、2020年8月3日を意味します。
13行目は、2020年7月30日を意味します。
15行目は、afterメソッドです。A>Bのときにtrueになります。
18行目は、beforeメソッドです。A<Bのときにtrueになります。
21行目は、equalsメソッドです。A=Bのときにtrueになります。
24行目は、compareToメソッドで比較しています。0より大きい/0より小さい/0であるで判定できます。

日にちを比較する(Calendar)

Calendarクラスで日にちを比較するサンプルです。

package test1;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class Test1 {
	public static void main(String[] args) {

			Calendar cal1 = Calendar.getInstance();
			cal1.set(Calendar.YEAR, 2020); // 2020年
			cal1.set(Calendar.MONTH, 7); // 8月 (月は0から始まる)
			cal1.set(Calendar.DAY_OF_MONTH, 3); //日
			
			Calendar cal2 = Calendar.getInstance();
			cal2.set(Calendar.YEAR, 2020); // 年
			cal2.set(Calendar.MONTH, 6); // 7月 (月は0から始まる)
			cal2.set(Calendar.DAY_OF_MONTH, 30); //日
			
			boolean d1 = cal1.after(cal2);
			System.out.println(d1); // true
			
			boolean d2 = cal1.before(cal2);
			System.out.println(d2); // false
			
			boolean d3 = cal1.equals(cal2);
			System.out.println(d3); // false
			
			Date date1 = cal1.getTime();
	 		SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy/MM/dd");
	 		String fdate1 = sdf1.format(date1);
	 		System.out.println(fdate1); // 2020/08/03
	 		
			Date date2 = cal2.getTime();
	 		SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy/MM/dd");
	 		String fdate2 = sdf2.format(date2);
	 		System.out.println(fdate2); // 2020/07/30
 	}
}

10~13行目は、2020年8月3日を意味します。
15~18行目は、2020年7月30日を意味します。
20行目は、afterメソッドです。A>Bのときにtrueになります。
23行目は、beforeメソッドです。A<Bのときにtrueになります。
26行目は、equalsメソッドです。A=Bのときにtrueになります。

関連の記事

Java 現在日時の取得と表示形式のサンプル

△上に戻る