프로그래밍/Java

[JAVA] 날짜 비교는 어떻게 할까요?

소행성왕자 2020. 9. 15. 10:57

java 에서 날짜 비교는 어떻게 할까요 ?

 

날짜 비교는 아래와 같이 두가지 종류가 있을것 같습니다.

 

1. 오늘 날짜로부터 미래의 날짜까지 지났는지 아닌지.

2. 특정 날짜로부터 미래의 날짜까지 지났는지 아닌지.

 

위와같은 상황일때 JAVA 에서의 날짜비교 할때 compareTo 메소드를 사용합니다.

 

compareTo 메소드

public int compareTo(String1 String2)

2개의 문자열을 비교하고 int 형으로 반환하는 메소드 립니다.

A.compareTo(B)

A == B  이면 0 반환
A > B 이면 1 반환
A < B dlaus -1 반환

 

/**
	 * 오늘 날짜로부터 endDate 까지 비교 
	 *
	 * [result] 
	 * 1 today > end
	 * 0 today == end
	 * -1 today < end  
	 *
	 * @param endDate		2020-09-17 10:18:16
	 * @return
	 */
	public int todayCompareTo(String endDate) {
		SimpleDateFormat format = new SimpleDateFormat ("yyyy-MM-dd HH:mm:ss");
	    Date time = new Date();
		String current = format.format(time);
		Date today = null;
		try {
			today = format.parse(current);
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		Date end = null;
		try {
			end = format.parse(endDate);
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
				
		//dd("current:"+current);	//current: 2020-09-15 10:18:16
		//dd("today:"+today);		//tody:Tue Sep 15 10:18:16 KST 2020
		
		//dd("endDate:"+endDate);
		//dd("end:"+end);
		
		int result = today.compareTo(end);
		return result;
		
	}
	
	/**
	 * startDate 로부터 endDate 까지 날짜 비교
	 *
	 * [result] 
	 * 1 today > end
	 * 0 today == end
	 * -1 today < end  
	 *
	 * @param startDate 	2020-09-15 10:18:16
	 * @param endDate   	2020-09-17 10:18:16
	 * @return
	 */
	public int dateCompareTo(String startDate, String endDate) {
		SimpleDateFormat format = new SimpleDateFormat ("yyyy-MM-dd HH:mm:ss");
	    
		Date today = null;
		try {
			today = format.parse(startDate);
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		Date end = null;
		try {
			end = format.parse(endDate);
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		int result = today.compareTo(end);
		return result;
		
	}

사용법

String idx = map.get("idx").toString();
String content = map.get("content").toString();
String endDate = map.get("end_date").toString();

int result = todayCompareTo(endDate);
if(result == 1) {
	//공지 end_date 날짜 지났음
	dd("== end_date 공지 업데이트 == idx: "+idx);
	dd("== end_date 공지 업데이트 == end_date: "+endDate);
}


------------------------------------------------------------------------------

SimpleDateFormat format = new SimpleDateFormat ("yyyy-MM-dd HH:mm:ss");
Date time = new Date();
String startDate = format.format(time);

int result = dateCompareTo(stratDate, endDate);
if(result == 1) {
	//공지 end_date 날짜 지났음
	dd("== end_date 공지 업데이트 == idx: "+idx);
	dd("== end_date 공지 업데이트 == end_date: "+endDate);
}