java

시작일과 종료일 사이이 모든 날짜 구하기

우주정복☆ 2015. 10. 23. 11:58

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

public class DateUtil {
public static void main(String[] args) {
DateUtil du = new DateUtil();

String[] days = du.getDiffDays("20070220", "20070302");

for( int i = 0; i < days.length; i++ ) {
System.out.println( days[i] );
}
}

/**
* 시작일부터 종료일까지 사이의 날짜를 배열에 담아 리턴 ( 시작일과 종료일을 모두 포함한다 )

* @param fromDate
* yyyyMMdd 형식의 시작일
* @param toDate
* yyyyMMdd 형식의 종료일
* @return yyyyMMdd 형식의 날짜가 담긴 배열
*/
public static String[] getDiffDays(String fromDate, String toDate) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");

Calendar cal = Calendar.getInstance();

try {
cal.setTime(sdf.parse(fromDate));
} catch (Exception e) {
}

int count = getDiffDayCount(fromDate, toDate);

// 시작일부터
cal.add(Calendar.DATE, -1);

// 데이터 저장
ArrayList<String> list = new ArrayList<String>();

for (int i = 0; i <= count; i++) {
cal.add(Calendar.DATE, 1);

list.add(sdf.format(cal.getTime()));
}

String[] result = new String[list.size()];

list.toArray(result);

return result;
}

/**
* 두날짜 사이의 일수를 리턴

* @param fromDate
* yyyyMMdd 형식의 시작일
* @param toDate
* yyyyMMdd 형식의 종료일
* @return 두날짜 사이의 일수
*/
public static int getDiffDayCount(String fromDate, String toDate) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");

try {
return (int) ((sdf.parse(toDate).getTime() - sdf.parse(fromDate)
.getTime()) / 1000 / 60 / 60 / 24);
} catch (Exception e) {
return 0;
}
}
}