자바에서 시간(Time), 날짜(Date) 비교하는 방법을 소개합니다.
Java8에서 LocalDateTime, LocalDate, LocalTime, ZonedDateTime가 제공됩니다.
이 API를 사용해서 날짜/시간을 비교할 수 있습니다.
Java8 이전에 사용했던 Date, Calendar로 날짜/시간을 비교할 수 있습니다.
[ Java8의 날짜/시간 API 비교 ]
LocalDateTime, LocalDate, LocalTime, ZonedDateTime는 다음 메소드를 제공합니다.
- isBefore() : 인자보다 과거일 때 true가 리턴
- isAfter() : 인자보다 미래일 때 true가 리턴
- isEqual() : 인자와 같은 시간일 때 true가 리턴
public void compareDate1() throws ParseException {
LocalDateTime date1 = LocalDateTime.parse("2021-11-14T10:11:50.000");
LocalDateTime date2 = LocalDateTime.parse("2021-12-20T15:20:31.000");
if (date1.isBefore(date2)) { //date1이 date2보다 과거일 경우
System.out.println("Date1 is before Date2");
}
if (date1.isAfter(date2)) { //date1보다 date2가 미래일 경우
System.out.println("Date1 is after Date2");
}
if (date1.isEqual(date2)) { // date1 = date2 같은 시간일 경우
System.out.println("Date1 is equal Date2");
}
}
결과 - isBefore의 경우가 나옴
2021-11-14T10:11:50
2021-12-20T15:20:31
Date1 is before Date2
[ 1. Date의 날짜 비교 ]
Date 클래스는 다음 메소드를 제공합니다.
- before() : 인자보다 과거일 때 true가 리턴
- after() : 인자보다 미래일 때 true가 리턴
- equal() : 인자와 같은 시간일 때 true가 리턴
public void compareDate2() throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date1 = sdf.parse("2021-07-12");
Date date2 = sdf.parse("2021-11-01");
System.out.println(sdf.format(date1));
System.out.println(sdf.format(date2));
if(date1.after(date2)){ //date1이 미래일 경우
System.out.println("Date1 is after Date2");
}
if(date1.before(date2)){ //date1이 과거일 경우
System.out.println("Date1 is before Date2");
}
if(date1.equals(date2)){ //date1 = date2
System.out.println("Date1 is equal Date2");
}
}
결과
2021-07-12
2021-11-01
Date1 is before Date2
[ 2. Date의 날짜 비교 (compareTo) ]
Date 클래스는 compareTo() 메소드를 제공하며, 이것으로 날짜를 비교할 수 있습니다.
- compareTo() > 0 : 인자보다 미래
- compareTo() < 0 : 인자보다 과거
- compareTo() == 0 : 인자와 같은 시간
public void compareDate3() throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date1 = sdf.parse("2021-07-12");
Date date2 = sdf.parse("2021-11-01");
System.out.println(sdf.format(date1));
System.out.println(sdf.format(date2));
if (date1.compareTo(date2) > 0) {
System.out.println("Date1 is after Date2");
} else if(date1.compareTo(date2) < 0){
System.out.println("Date1 is before Date2");
} else {
System.out.println("Date1 is equal to Date2");
}
}
결과
2021-07-12
2021-11-01
Date1 is before Date2
Calendar의 날짜 비교
Calendar 클래스는 다음 메소드를 제공합니다.
before() : 인자보다 과거일 때 true가 리턴
after() : 인자보다 미래일 때 true가 리턴
equal() : 인자와 같은 시간일 때 true가 리턴
public void compareDate4() throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date1 = sdf.parse("2021-07-12");
Date date2 = sdf.parse("2021-11-01");
System.out.println(sdf.format(date1));
System.out.println(sdf.format(date2));
Calendar cal1 = Calendar.getInstance();
Calendar cal2 = Calendar.getInstance();
cal1.setTime(date1);
cal2.setTime(date2);
if(cal1.after(cal2)){
System.out.println("Date1 is after Date2");
}
if(cal1.before(cal2)){
System.out.println("Date1 is before Date2");
}
if(cal1.equals(cal2)){
System.out.println("Date1 is equal Date2");
}
}
결과
2021-07-12
2021-11-01
Date1 is before Date2
[ 참고 사이트 ]
'Spring > Java' 카테고리의 다른 글
[ java ] 서버 물리 경로 구하기 (0) | 2022.03.13 |
---|---|
[ java ] os별 파일 구분자(File.separator) (0) | 2022.03.13 |
[ java ] 코드 실행 시간 측정법 (0) | 2022.03.12 |
[ Java ] 이전페이지 URL과 URI 확인하기 (0) | 2022.03.11 |
[ java ] PDF 만들기 (Spire.pdf for java) (0) | 2022.03.09 |
댓글