2011년 6월 30일 목요일
날짜함수-3
/**
* 날짜에 - 를 넣는다.
* @param yyyyMMdd 형식
* @return yyyy-MM-dd 형식의 날짜가 담긴 날짜
*/
public static String addDash(String dash){
String dash_temp = "";
if ((dash == null) || (dash.equals(""))) {
return "";
} else {
dash_temp = replace(dash, "-", "");
return dash_temp.substring(0,4) + "-" + dash_temp.substring(4,6) + "-" + dash_temp.substring(6,8);
}
}
/**
* 두날짜 사이의 월수를 리턴
* @param fromDate yyyyMMdd 형식의 시작일
* @param toDate yyyyMMdd 형식의 종료일
* @return 두날짜 사이의 일수
*/
public static int getDiffMonthCount(String fromDate, String toDate) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMM");
try {
return (int) ((sdf.parse(toDate).getTime() - sdf.parse(fromDate)
.getTime()) / 1000 / 60 / 60 / 24);
} catch (Exception e) {
return 0;
}
}
/**
* 시작일부터 종료일까지 사이의 날짜를 배열에 담아 리턴
* ( 시작일과 종료일을 모두 포함한다 )
* @param fromDate yyyyMMdd 혹은 yyyyMM 혹은 yyyy 형식의 시작일
* @param toDate yyyyMMdd 혹은 yyyyMM 혹은 yyyy 형식의 종료일
* @param dateFlag 년/월/일 구분
* @return yyyyMMdd 혹은 yyyyMM 혹은 yyyy 형식의 날짜가 담긴 배열
*/
public static String[] getDiffDays(String fromDate, String toDate, String dateFlag) {
String startDate = fromDate;
String endDate = toDate;
// 데이터 저장
List list = new ArrayList();
if (dateFlag.equals("Y")) {
for (int i = Integer.parseInt(startDate); i <= Integer.parseInt(endDate); i++) {
list.add( Integer.toString(i) );
}
} else {
if (dateFlag.equals("M")) {
startDate = startDate + "01";
endDate = endDate + "01";
}
System.out.println( "startDate : " + startDate );
System.out.println( "endDate : " + endDate );
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
Calendar cal = Calendar.getInstance();
try {
cal.setTime(sdf.parse(startDate));
} catch (Exception e) {
}
int count = getDiffDayCount(startDate, endDate);
// 시작일부터
cal.add(Calendar.DATE, -1);
String monthDate = "";
String monthDate2 = "";
for (int i = 0; i <= count; i++) {
cal.add(Calendar.DATE, 1);
if (dateFlag.equals("D")) {
list.add(sdf.format(cal.getTime()));
} else if (dateFlag.equals("M")) {
monthDate = sdf.format(cal.getTime()).substring(0, 6);
if (i == 0) {
list.add(monthDate);
monthDate2 = monthDate;
} else {
if (!monthDate.equals(monthDate2)) {
list.add(monthDate);
monthDate2 = monthDate;
}
}
}
}
}
String[] result = new String[list.size()];
list.toArray(result);
return result;
}
/**
* Method replace 문자열에서 일정 부분을 다른 부분으로 대치하는 메소드
* @param mainString
* @param oldString
* @param newString
* @return String
*/
public static String replace(String mainString, String oldString, String newString) {
if (mainString == null) {
return null;
}
if (oldString == null || oldString.length() == 0) {
return mainString;
}
if (newString == null) {
newString = "";
}
int i = mainString.lastIndexOf(oldString);
if (i < 0)
return mainString;
StringBuffer mainSb = new StringBuffer(mainString);
while (i >= 0) {
mainSb.replace(i, (i + oldString.length()), newString);
i = mainString.lastIndexOf(oldString, i - 1);
}
return mainSb.toString();
}
피드 구독하기:
댓글 (Atom)
댓글 없음:
댓글 쓰기