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

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

目次

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

日にちを比較する(LocalDate)

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

isAfterメソッドは、A>Bのときにtrueになります。
isBeforeメソッドは、A<Bのときにtrueになります。
isEqualメソッドは、A=Bのときにtrueになります。

package test1;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;

public class Test1 {
	public static void main(String[] args) {
//		LocalDate date1 = LocalDate.of(2020,8,3);
//		LocalDate date2 = LocalDate.of(2020,7,30);
		final String FORMAT = "yyyy-MM-dd";
		
		// 1.年月日をセット
		LocalDate date1 = LocalDate.parse
				("2020-08-03", DateTimeFormatter.ofPattern(FORMAT));
		// 2.年月日をセット
		LocalDate date2 = LocalDate.parse
				("2020-07-30", DateTimeFormatter.ofPattern(FORMAT));	
		
		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
 	}
}

13,16行目は、年月日がyyyy-MM-ddのString型の場合です。7,8行目の指定方法でも可能です。

時間を比較する(LocalDateTime)

isAfterメソッドは、A>Bのときにtrueになります。
isBeforeメソッドは、A<Bのときにtrueになります。
isEqualメソッドは、A=Bのときにtrueになります。

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

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);
		final String FORMAT = "yyyy-MM-dd HH:mm:ss.SSS";
		
		// 指定日時をセット1
		LocalDateTime date1 = LocalDateTime.parse
			("2020-08-03 15:20:10.000", DateTimeFormatter.ofPattern(FORMAT));

		// 指定日時をセット2
		LocalDateTime date2 = LocalDateTime.parse
			("2020-08-03 14:50:10.000", DateTimeFormatter.ofPattern(FORMAT));
		
		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
 	}
}

14,18行目は、年月日がyyyy-MM-dd HH:mm:ss.SSSのString型の場合です。8,9行目の指定方法でも可能です。
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 現在日時の取得と表示形式のサンプル

△上に戻る