| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172 |
- package xin.glue.user.common;
- import java.text.ParseException;
- import java.text.SimpleDateFormat;
- import java.util.Calendar;
- import java.util.Date;
- public class DateUtils
- {
- public static final int MILLIS_PER_SECOND = 1000;
- public static final int MILLIS_PER_MINUTE = 1000 * 60;
- public static final int MILLIS_PER_DAY = 1000 * 60 * 60 * 24;
- public static final String DEFAULT_DATE_FORMAT = "yyyyMMddHHmmss";
-
- private DateUtils()
- {
- }
-
- /**
- * 디폴트 DateFormat(yyyyMMddHHmmss)을 사용하여 입력된 날자를 연산한 후
- * Date String을 리턴한다.
- *
- * 예제> getStringDateAddedTime("20081120132215", 0,0,0,25) -> "20081120132240"
- * getStringDateAddedTime("20081120132215", 1,0,0,0) -> "20081121132215"
- * getStringDateAddedTime("20081120132215", 0,2,0,0) -> "20081120152215"
- * getStringDateAddedTime("20081120132215", 0,0,30,0) -> "20081120135215"
- *
- * @param date 날자
- * @param day 일
- * @param hour 시간
- * @param min 분
- * @param sec 초
- * @return 연산된 Date String
- * @see java.text.SimpleDateFormat
- */
- public static String getStringDateAddedTime(String date,
- int day,
- int hour,
- int min,
- int sec)
- {
- return getStringDateAddedTime(date, DEFAULT_DATE_FORMAT, day, hour, min, sec);
- }
-
- /**
- * 날자를 연산하여 주어진 DateFormat 에 맞도록 String을 리턴함.
- *
- *
- * @param date 날자
- * @param format Date Format (예, yyyyMMddHHmmss)
- * @param day 일
- * @param hour 시간
- * @param min 분
- * @param sec 초
- * @return 연산된 Date String
- * @see java.text.SimpleDateFormat
- */
- public static String getStringDateAddedTime(String date,
- String format,
- int day,
- int hour,
- int min,
- int sec)
- {
- SimpleDateFormat sdf = new SimpleDateFormat(format);
- Date dateObj = null;
- try
- {
- dateObj = sdf.parse(date);
- }
- catch (ParseException pe)
- {
- throw new RuntimeException(
- "Cannot convert StringDate - " + pe.getMessage(), pe);
- }
-
- Calendar calendar = Calendar.getInstance();
- calendar.setTime(dateObj);
- calendar.add(Calendar.DATE, day);
- calendar.add(Calendar.HOUR, hour);
- calendar.add(Calendar.MINUTE, min);
- calendar.add(Calendar.SECOND, sec);
-
- return sdf.format(calendar.getTime());
- }
-
- /**
- * 입력 된 두 시각 차이의 차이를 초(second)로 리턴한다.
- * 입력 포맷은 디폴트 포맷이어야 한다.
- * (예, yyyyMMddHHmmss)
- *
- * @param startDay yyyyMMddHHmmss의 날자 String
- * @param endDay yyyyMMddHHmmss의 날자 String
- * @return 두 시각 차이 (초 단위)
- */
- public static long getDurationBySeconds(String startDay, String endDay)
- {
- return getDuration(startDay, endDay) / MILLIS_PER_SECOND;
- }
-
- /**
- * 입력 된 두 시각 차이의 차이를 분(minute)으로 리턴한다.
- * 입력 포맷은 디폴트 포맷이어야 한다.
- * (예, yyyyMMddHHmmss)
- *
- * @param startDay yyyyMMddHHmmss의 날자 String
- * @param endDay yyyyMMddHHmmss의 날자 String
- * @return 두 시각 차이 (분 단위)
- */
- public static int getDurationByMinute(String startDay, String endDay)
- {
- long duration = getDuration(startDay, endDay) / MILLIS_PER_MINUTE;
- Long mins = new Long(duration);
- return mins.intValue();
- }
-
- /**
- * 입력 된 두 시각 차이의 차이를 일(day)로 리턴한다.
- * 입력 포맷은 디폴트 포맷이어야 한다.
- * (예, yyyyMMddHHmmss)
- *
- * @param startDay yyyyMMddHHmmss의 날자 String
- * @param endDay yyyyMMddHHmmss의 날자 String
- * @return 두 시각 차이 (일 단위)
- */
- public static int getDurationByDay(String startDay, String endDay)
- {
- long duration = getDuration(startDay, endDay) / MILLIS_PER_DAY;
- Long days = new Long(duration);
- return days.intValue();
- }
-
- private static long getDuration(String startDay, String endDay)
- {
- SimpleDateFormat sdf = new SimpleDateFormat(DEFAULT_DATE_FORMAT);
- Date start = null;
- Date end = null;
- try
- {
- start = sdf.parse(startDay);
- end = sdf.parse(endDay);
- }
- catch (ParseException pe)
- {
- throw new RuntimeException(
- "Cannot convert StringDate - " + pe.getMessage(), pe);
- }
-
- long duration = end.getTime() - start.getTime();
- if (duration <0L)
- duration = duration * -1;
- return duration;
- }
-
- public static void main(String[] args)
- {
- try
- {
- //String result = DateUtils.getStringDateAddedTime("20081101121229",
- // 0, 0, 20, 2);
- //System.out.println(result);
-
- //System.out.println(getDurationBySeconds("20081101121229", "20091101121835"));
- System.out.println(getDurationByMinute("20081101121229", "20081101121329"));
- //System.out.println(getDurationByDay("20081101121229", "20091121121229"));
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
- }
- }
|