package util; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.TimeZone; import org.apache.commons.lang.StringUtils; import org.springframework.util.Assert; public abstract class DateUtils { public static final String DEFAULT_DATE_FORMAT = "yyyy-MM-dd"; public static final String DEFAULT_TIME_ZONE = "GMT-4:00"; public static final String NORMAL_DATE_FORMAT = "yyyy-MM-dd HH:mm:ss"; /** * 根据yyyy-MM-dd HH:mm:ss格式返回指定时间 * * @return */ public static final String formatOfDateTime(Date date) { return format(date, NORMAL_DATE_FORMAT); } /** * 根据yyyy-MM-dd HH:mm:ss格式返回当前时间 * * @return */ public static final String formatOfDateTime() { return formatOfDateTime(new Date()); } public static final String format(Date date, String pattern) { if (date == null) { throw new NullPointerException("时间不能为NULL!"); } if (StringUtils.isEmpty(pattern)) { throw new IllegalArgumentException("格式pattern不能为空字符串!"); } Calendar calendar = Calendar.getInstance(); calendar.setFirstDayOfWeek(Calendar.MONDAY); DateFormat formater = new SimpleDateFormat(pattern); formater.setCalendar(calendar); return formater.format(date); } public static Date toDate(String string) { return toDate(string, DEFAULT_DATE_FORMAT); } public static Date toDate(String string, String pattern) { return toDate(string, pattern, TimeZone.getTimeZone(DEFAULT_TIME_ZONE)); } public static Date toDate(String string, String pattern, TimeZone timeZone) { try { SimpleDateFormat sdf = (SimpleDateFormat) createDateFormat(pattern, timeZone); return sdf.parse(string); } catch (ParseException e) { throw new RuntimeException(e); } } public static String format(Date date, String pattern, TimeZone timeZone) { DateFormat df = createDateFormat(pattern, timeZone); return df.format(date); } public static DateFormat createDateFormat(String pattern) { return createDateFormat(pattern, TimeZone.getTimeZone(DEFAULT_TIME_ZONE)); } public static DateFormat createDateFormat(String pattern, TimeZone timeZone) { SimpleDateFormat sdf = new SimpleDateFormat(pattern); TimeZone gmt = timeZone; sdf.setTimeZone(gmt); sdf.setLenient(true); return sdf; } public static int getYear(java.util.Date date) { Calendar calendar = (Calendar) Calendar.getInstance().clone(); calendar.setTime(date); return calendar.get(Calendar.YEAR); } public static String getShortYear(java.util.Date date) { String year = getYear(date) + ""; int length = year.length(); return year.substring(length - 2, length); } public static int getMonth(java.util.Date date) { Calendar calendar = (Calendar) Calendar.getInstance().clone(); calendar.setTime(date); return calendar.get(Calendar.MONTH) + 1; } public static int getDay(java.util.Date date) { Calendar calendar = (Calendar) Calendar.getInstance().clone(); calendar.setTime(date); return calendar.get(Calendar.DAY_OF_MONTH); } public static int getHour(java.util.Date date) { Calendar calendar = (Calendar) Calendar.getInstance().clone(); calendar.setTime(date); return calendar.get(Calendar.HOUR_OF_DAY); } public static int getMinute(java.util.Date date) { Calendar calendar = (Calendar) Calendar.getInstance().clone(); calendar.setTime(date); return calendar.get(Calendar.MINUTE); } public static int getSecond(java.util.Date date) { Calendar calendar = (Calendar) Calendar.getInstance().clone(); calendar.setTime(date); return calendar.get(Calendar.SECOND); } public static Date addMilliSecond(java.util.Date oldDate, int addMilliSecond) { Calendar calendar = (Calendar) Calendar.getInstance().clone(); calendar.setTime(oldDate); calendar.add(Calendar.MILLISECOND, addMilliSecond); return calendar.getTime(); } public static Date addSecond(java.util.Date oldDate, int addSecond) { Calendar calendar = (Calendar) Calendar.getInstance().clone(); calendar.setTime(oldDate); calendar.add(Calendar.SECOND, addSecond); return calendar.getTime(); } public static Date addMinute(java.util.Date oldDate, int addMinutes) { Calendar calendar = (Calendar) Calendar.getInstance().clone(); calendar.setTime(oldDate); calendar.add(Calendar.MINUTE, addMinutes); return calendar.getTime(); } public static Date addHour(java.util.Date oldDate, int addHours) { Calendar calendar = (Calendar) Calendar.getInstance().clone(); calendar.setTime(oldDate); calendar.add(Calendar.HOUR, addHours); return calendar.getTime(); } public static Date addDay(java.util.Date oldDate, int addDays) { Calendar calendar = (Calendar) Calendar.getInstance().clone(); calendar.setTime(oldDate); calendar.add(Calendar.DATE, addDays); return calendar.getTime(); } public static Date addMonth(java.util.Date oldDate, int addMonths) { Calendar calendar = (Calendar) Calendar.getInstance().clone(); calendar.setTime(oldDate); calendar.add(Calendar.MONTH, addMonths); return calendar.getTime(); } public static Date addYear(java.util.Date oldDate, int addYears) { Calendar calendar = (Calendar) Calendar.getInstance().clone(); calendar.setTime(oldDate); calendar.add(Calendar.YEAR, addYears); return calendar.getTime(); } public static long calcTimeBetween(String unitType, Date startDate, Date endDate) { Assert.hasText(unitType); Assert.notNull(startDate); Assert.notNull(endDate); long between = endDate.getTime() - startDate.getTime(); if (unitType.equals("ms")) { return between; } else if (unitType.equals("s")) { return between / 1000;// 返回秒 } else if (unitType.equals("m")) { return between / 60000;// 返回分钟 } else if (unitType.equals("h")) { return between / 3600000;// 返回小时 } else if (unitType.equals("d")) { return between / 86400000;// 返回天数 } else { throw new IllegalArgumentException("the unitType is unknown"); } } public static long calcTimeBetweenInMillis(Date startDate, Date endDate) { return calcTimeBetween("ms", startDate, endDate); } public static long calcTimeBetweenInSecond(Date startDate, Date endDate) { return calcTimeBetween("s", startDate, endDate); } public static long calcTimeBetweenInMinute(Date startDate, Date endDate) { return calcTimeBetween("m", startDate, endDate); } public static long calcTimeBetweenInHour(Date startDate, Date endDate) { return calcTimeBetween("h", startDate, endDate); } public static long calcTimeBetweenInDay(Date startDate, Date endDate) { return calcTimeBetween("d", startDate, endDate); } public static Date roundYear(Date date) { return org.apache.commons.lang.time.DateUtils.round(date, Calendar.YEAR); } public static Date roundMonth(Date date) { return org.apache.commons.lang.time.DateUtils.round(date, Calendar.MONTH); } public static Date roundDay(Date date) { return org.apache.commons.lang.time.DateUtils.round(date, Calendar.DATE); } public static Date roundHour(Date date) { return org.apache.commons.lang.time.DateUtils.round(date, Calendar.HOUR); } public static Date roundMinute(Date date) { return org.apache.commons.lang.time.DateUtils.round(date, Calendar.MINUTE); } public static Date roundSecond(Date date) { return org.apache.commons.lang.time.DateUtils.round(date, Calendar.SECOND); } public static Date truncateYear(Date date) { return org.apache.commons.lang.time.DateUtils.truncate(date, Calendar.YEAR); } public static Date truncateMonth(Date date) { return org.apache.commons.lang.time.DateUtils.truncate(date, Calendar.MONTH); } public static Date truncateDay(Date date) { return org.apache.commons.lang.time.DateUtils.truncate(date, Calendar.DATE); } public static Date truncateHour(Date date) { return org.apache.commons.lang.time.DateUtils.truncate(date, Calendar.HOUR); } public static Date truncateMinute(Date date) { return org.apache.commons.lang.time.DateUtils.truncate(date, Calendar.MINUTE); } public static Date truncateSecond(Date date) { return org.apache.commons.lang.time.DateUtils.truncate(date, Calendar.SECOND); } public static Date setHour(Date oldDate, int newHour) { Calendar calendar = (Calendar) Calendar.getInstance().clone(); calendar.setTime(oldDate); calendar.set(Calendar.HOUR, newHour); return calendar.getTime(); } public static Date setMinute(Date oldDate, int newMinute) { Calendar calendar = (Calendar) Calendar.getInstance().clone(); calendar.setTime(oldDate); calendar.set(Calendar.MINUTE, newMinute); return calendar.getTime(); } public static Date setSecond(Date oldDate, int newSecond) { Calendar calendar = (Calendar) Calendar.getInstance().clone(); calendar.setTime(oldDate); calendar.set(Calendar.SECOND, newSecond); return calendar.getTime(); } /** * * @param dt Date * @return boolean */ @SuppressWarnings("deprecation") public static boolean isRYear(Date dt) { return (isRYear(1900 + dt.getYear())); } /** * * @param y int * @return boolean */ public static boolean isRYear(int y) { return (y % 400 == 0 || (y % 4 == 0 && y % 100 != 0)); } /** * 获取一个日期的时间字符串 * * @param dt Date * @return String */ public static String getTimeStr(Date dt) { return new SimpleDateFormat("HH:mm:ss").format(dt); } /** * 获取一个日期值的日期字符串 * * @param dt Date * @return String */ public static String getDateStr(Date dt) { return new SimpleDateFormat("yyyy-MM-dd").format(dt); } /** * 获取一个日期值的带时间日期字符串 * * @param dt Date * @return String */ public static String getLongDate(Date dt) { return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(dt); } /** * * @param dt Date * @return String */ public static String toString(Date dt) { return format(dt, "yyyy-MM-dd HH:mm:ss"); } /** * * @param date Date * @return Timestamp added by jiayc */ public static java.sql.Timestamp dateToTimeStamp(java.util.Date date) { if (date == null) { return null; } else { return new java.sql.Timestamp(date.getTime()); } } }