import java.util.*;
import java.text.SimpleDateFormat;public class DateUtils {
/**
* 두날짜 사이의 일수를 리턴
* @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;
}
} /**
* 시작일부터 종료일까지 사이의 날짜를 배열에 담아 리턴
* ( 시작일과 종료일을 모두 포함한다 )
* @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); // 데이터 저장
List list = new ArrayList(); 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 yyyyMMdd 형식의 날짜가 담긴 배열
*/
public static String[] getDiffMonth(String fromDate, String toDate) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMM"); Calendar cal = Calendar.getInstance(); try {
cal.setTime(sdf.parse(fromDate));
} catch (Exception e) {
} int count = getDiffDayCount(fromDate, toDate); // 시작일부터
cal.add(Calendar.MONTH, -1); // 데이터 저장
List list = new ArrayList(); for (int i = 0; i <= count; i++) {
cal.add(Calendar.MONTH, 1); list.add(sdf.format(cal.getTime()));
} String[] result = new String[list.size()]; list.toArray(result); return result;
}
/**
* 현재 날짜에서 변경 요청한 날짜 더하거나 빼서 리턴
* @param 숫자(일수) 집어넣기
* @return yyyyMMdd 형식의 날짜가 담긴 날짜
*/ public static String previosDate(int sub){
SimpleDateFormat fmt=new SimpleDateFormat("yyyyMMdd");
java.util.Calendar c=java.util.Calendar.getInstance();
java.util.Date date=null;
try{
date=fmt.parse(fmt.format(new Date()));
c.setTime(date);
c.add(java.util.Calendar.DAY_OF_YEAR, sub);
}catch(Exception ex){
}
return fmt.format(c.getTime());
} /**
* 현재 날짜에서 변경 요청한 월 더하거나 빼서
* @param 숫자(월수) 집어넣기
* @return yyyyMMdd 형식의 날짜가 담긴 날짜
*/ public static String previosMonth(int sub){
SimpleDateFormat fmt=new SimpleDateFormat("yyyyMMdd");
java.util.Calendar c=java.util.Calendar.getInstance();
java.util.Date date=null;
try{
date=fmt.parse(fmt.format(new Date()));
c.setTime(date);
c.add(java.util.Calendar.MONTH, sub);
}catch(Exception ex){
}
return fmt.format(c.getTime());
} /**
* 날짜에 - 를 넣는다.
* @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);
} } /*입력한 날짜기 유효한 날짜인지 체크*/
public static boolean checkDate(String year, String month, String day) { try {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy.MM.dd"); Date result = formatter.parse(year + "." + month + "." + day);
String resultStr = formatter.format(result); if (resultStr.equalsIgnoreCase(year + "." + month + "." + day))
return true;
else
return false;
} catch (Exception e) {
return false;
}
} /***
* 입력한 시간이 유효한지 체크
* @param hh 시간
* @param mm 분
* @param ss 초
* @return boolean
*/
public static boolean checkTime(String hh, String mm, String ss) {
try {
int h = Integer.parseInt(hh);
int m = Integer.parseInt(mm);
int s = Integer.parseInt(ss); if (h < 0 || h > 23)
return false;
if (m < 0 || m > 59)
return false;
if (s < 0 || s > 50)
return false;
return true;
} catch (Exception e) {
return false;
}
} /***
* 현재 시간과 비교하기
* @param nowDate 현재 시간.
* @param inputDate 입력 날짜.
* @return boolean TRUE / FALSE
*/
public static boolean getHourDiff(String nowDate, String inputDate) {
int diff_val = 0; SimpleDateFormat sdformat = new SimpleDateFormat("yyyy/MM/dd HH:mm");
try{
Date sendDate1 = sdformat.parse(nowDate);
Date sendDate2 = sdformat.parse(inputDate);
java.sql.Timestamp sendStamp1 = new java.sql.Timestamp(sendDate1.getTime());
java.sql.Timestamp sendStamp2 = new java.sql.Timestamp(sendDate2.getTime());
diff_val = sendStamp2.compareTo(sendStamp1);
}catch(Exception ex){
}
if (diff_val > 0) return true;
else return false;
} /***
* 현재 년도 가져오기
* @return String
*/
public static String nowYearGet() {
Calendar calendar = Calendar.getInstance();
return Integer.toString(calendar.get ( Calendar.YEAR ));
} /***
* 현재 월 가져오기
* @return String
*/
public static String nowMonthGet() {
Calendar calendar = Calendar.getInstance();
int nMonth = calendar.get ( Calendar.MONTH ) + 1;
if ( nMonth < 10 ) return "0" + Integer.toString(nMonth);
else return Integer.toString(nMonth);
} /***
* 현재 일 가져오기
* @return String
*/
public static String nowDayGet() {
Calendar calendar = Calendar.getInstance();
int nDay = calendar.get ( Calendar.DAY_OF_MONTH );
if ( nDay < 10 ) return "0" + Integer.toString(nDay);
else return Integer.toString(nDay);
} /***
* 현재 시간 가져오기
* @return String
*/
public static String nowHourGet() {
Calendar calendar = Calendar.getInstance();
int nHour = calendar.get ( Calendar.HOUR_OF_DAY );
if ( nHour < 10 ) return "0" + Integer.toString(nHour);
else return Integer.toString(nHour);
} /***
* 현재 분 가져오기
* @return String
*/
public static String nowMinuteGet() {
Calendar calendar = Calendar.getInstance();
int nMinute = calendar.get ( Calendar.MINUTE );
if ( nMinute < 10 ) return "0" + Integer.toString(nMinute);
else return Integer.toString(nMinute);
} /**
* 현재 년월일시분초 값을 가져옴
* @return yyyyMMddHHmmss 형식의 날짜
*/
public static String nowDate(){ Calendar cal = Calendar.getInstance();
java.util.Date currentTime = cal.getTime();
SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmss");
String ndate = formatter.format(currentTime);
return ndate;
} /***
* main
* @param argv
*/
public static void main(String[] argv) {
// 테스트
boolean cc = checkDate("2007", "03", "30");
System.out.println( cc );
System.out.println( getHourDiff("2007/08/01 02:02", "2007/08/01 02:03") );
System.out.println( nowMinuteGet() );
//String aa = getHourDiff("2007/08/01 02:02");
//String bb = previosMonth(-1); //String[] aa= getDiffMonth("200612", "200705");
//for( int x = 0; x < aa.length; x++ ) {
// System.out.println( aa[x] );
//} }
/**
* 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();
}
}
'JAVA' 카테고리의 다른 글
String 형태의 XML 파싱 (0) | 2009.12.08 |
---|---|
[ JAVA ] 자바 String Util 들 (10) | 2009.12.08 |
[ JAVA ] String 문자열 치환 (0) | 2009.12.08 |
[ JAVA ] TreeSet 으로 중복 제거 및 정렬 하는 법 (DTO 기준) (0) | 2009.12.04 |
[ JAVA ] XSS 보안 관련 자바 모듈 (0) | 2009.08.20 |
댓글