import java.io.PrintStream;import java.sql.Time;import java.sql.Timestamp;import java.text.DateFormat;import java.text.ParsePosition;import java.text.SimpleDateFormat;import java.util.Calendar;public class DateUtil{ public static final String C_TIME_PATTON_DEFAULT = "yyyy-MM-dd HH:mm:ss"; public static final String C_DATE_PATTON_DEFAULT = "yyyy-MM-dd"; public static final int C_ONE_SECOND = 1000; public static final int C_ONE_MINUTE = 60000; public static final long C_ONE_HOUR = 3600000L; public static final long C_ONE_DAY = 86400000L; public String getMonthBegin(String strdate) { java.util.Date date = parseDate(strdate); return formatDateByFormat(date, "yyyy-MM") + "-01"; } public String getMonthEnd(String strdate) { java.util.Date date = parseDate(getMonthBegin(strdate)); Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(2, 1); calendar.add(6, -1); return formatDate(calendar.getTime()); } public String formatDate(java.util.Date date) { return formatDateByFormat(date, "yyyy-MM-dd"); } public String formatDateByFormat(java.util.Date date, String format) { String result = ""; if (date != null) { try { SimpleDateFormat sdf = new SimpleDateFormat(format); result = sdf.format(date); } catch (Exception ex) { ex.printStackTrace(); } } return result; } public static java.util.Date parseDate(String dateStr, String format) { java.util.Date date = null; try { DateFormat df = new SimpleDateFormat(format); String dt = dateStr; if ((!dt.equals("")) && (dt.length() < format.length())) { dt = dt + format.substring(dt.length()).replaceAll("[YyMmDdHhSs]", "0"); } date = df.parse(dt); } catch (Exception localException) { } return date; } public static java.util.Date parseDate(String dateStr) { return parseDate(dateStr, "yyyy-MM-dd"); } public static java.util.Date parseDate(java.sql.Date date) { return date; } public static java.sql.Date parseSqlDate(java.util.Date date) { if (date != null) { return new java.sql.Date(date.getTime()); } return null; } public static java.sql.Date parseSqlDate(String dateStr, String format) { java.util.Date date = parseDate(dateStr, format); return parseSqlDate(date); } public static java.sql.Date parseSqlDate(String dateStr) { return parseSqlDate(dateStr, "yyyy-MM-dd"); } public static Timestamp parseTimestamp(String dateStr, String format) { java.util.Date date = parseDate(dateStr, format); if (date != null) { long t = date.getTime(); return new Timestamp(t); } return null; } public static Timestamp parseTimestamp(String dateStr) { return parseTimestamp(dateStr, "yyyy-MM-dd HH:mm:ss"); } public static String format(java.util.Date date, String format) { String result = ""; try { if (date != null) { DateFormat df = new SimpleDateFormat(format); result = df.format(date); } } catch (Exception localException) { } return result; } public static String format(java.util.Date date) { return format(date, "yyyy-MM-dd"); } public static int getYear(java.util.Date date) { Calendar c = Calendar.getInstance(); c.setTime(date); return c.get(1); } public static int getMonth(java.util.Date date) { Calendar c = Calendar.getInstance(); c.setTime(date); return c.get(2) + 1; } public static int getDay(java.util.Date date) { Calendar c = Calendar.getInstance(); c.setTime(date); return c.get(5); } public static int getHour(java.util.Date date) { Calendar c = Calendar.getInstance(); c.setTime(date); return c.get(11); } public static int getMinute(java.util.Date date) { Calendar c = Calendar.getInstance(); c.setTime(date); return c.get(12); } public static int getSecond(java.util.Date date) { Calendar c = Calendar.getInstance(); c.setTime(date); return c.get(13); } public static long getMillis(java.util.Date date) { Calendar c = Calendar.getInstance(); c.setTime(date); return c.getTimeInMillis(); } public static long getMillis() { return System.currentTimeMillis(); } public static String getDate(java.util.Date date) { return format(date, "yyyy-MM-dd"); } public static String getTimeStr(java.util.Date date) { return format(date, "HH:mm:ss"); } public static String getDateTime(java.util.Date date) { return format(date, "yyyy-MM-dd HH:mm:ss"); } public static java.util.Date addDate(java.util.Date date, int day) { Calendar c = Calendar.getInstance(); c.setTimeInMillis(getMillis(date) + day * 24L * 3600L * 1000L); return c.getTime(); } public static int diffDate(java.util.Date date, java.util.Date date1) { return (int)((getMillis(date) - getMillis(date1)) / 86400000L); } public static java.util.Date getDateTime(String datetime) { SimpleDateFormat dt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); if (datetime.length() < 11) { datetime = datetime + " 12:00:00"; } try { java.util.Date udate = dt.parse(datetime); return udate; } catch (Exception e) { e.printStackTrace(); }return null; } public static java.util.Date getEndDateTime() { String date = "2039-12-31 12:00:00"; return getDateTime(date); } public static java.util.Date getbeginDateTime() { String date = "1970-01-01 12:00:00"; return getDateTime(date); } public static Timestamp getNowTimestamp() { return new Timestamp(new java.util.Date().getTime()); } public static Timestamp getTimestamp(java.util.Date date) { return new Timestamp(date.getTime()); } public static Time getTime(java.util.Date date) { return new Time(date.getTime()); } public static Time getNowTime() { return new Time(new java.util.Date().getTime()); } public static java.util.Date getNowDate() { return new java.util.Date(); } public static String getNowDateStr() { String format = "yyyy-MM-dd HH:mm:ss"; SimpleDateFormat sdf = new SimpleDateFormat(format); return sdf.format(new java.util.Date()); } public static String getDateStr(java.util.Date date) { String format = "yyyy-MM-dd HH:mm:ss"; SimpleDateFormat sdf = new SimpleDateFormat(format); return sdf.format(date); } public static int findMaxDayInMonth() { return findMaxDayInMonth(0, 0); } public static int findMaxDayInMonth(java.util.Date date) { if (date == null) { return 0; } return findMaxDayInMonth(date2Calendar(date)); } public static int findMaxDayInMonth(Calendar calendar) { if (calendar == null) { return 0; } return calendar.getActualMaximum(5); } public static int findMaxDayInMonth(int month) { return findMaxDayInMonth(0, month); } public static int findMaxDayInMonth(int year, int month) { Calendar calendar = Calendar.getInstance(); if (year > 0) { calendar.set(1, year); } if (month > 0) { calendar.set(2, month - 1); } return findMaxDayInMonth(calendar); } public static java.util.Date calendar2Date(Calendar calendar) { if (calendar == null) { return null; } return calendar.getTime(); } public static Calendar date2Calendar(java.util.Date date) { if (date == null) { return null; } Calendar calendar = Calendar.getInstance(); calendar.setTime(date); return calendar; } public static SimpleDateFormat getSimpleDateFormat() { return getSimpleDateFormat(null); } public static SimpleDateFormat getSimpleDateFormat(String format) { SimpleDateFormat sdf; SimpleDateFormat sdf; if (format == null) sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); else { sdf = new SimpleDateFormat(format); } return sdf; } public static String formatDate2Str() { return formatDate2Str(new java.util.Date()); } public static String formatDate2Str(java.util.Date date) { return formatDate2Str(date, "yyyy-MM-dd HH:mm:ss"); } public static String formatDate2Str(java.util.Date date, String format) { if (date == null) { return null; } if ((format == null) || (format.equals(""))) { format = "yyyy-MM-dd HH:mm:ss"; } SimpleDateFormat sdf = getSimpleDateFormat(format); return sdf.format(date); } public static java.util.Date formatStr2Date(String dateStr) { return formatStr2Date(dateStr, null); } public static java.util.Date formatStr2Date(String dateStr, String format) { if (dateStr == null) { return null; } if ((format == null) || (format.equals(""))) { format = "yyyy-MM-dd HH:mm:ss"; } SimpleDateFormat sdf = getSimpleDateFormat(format); return sdf.parse(dateStr, new ParsePosition(0)); } public static String formatDefault2Define(String dateStr, String defineFormat) { return formatSource2Target(dateStr, "yyyy-MM-dd HH:mm:ss", defineFormat); } public static String formatSource2Target(String dateStr, String sourceFormat, String targetFormat) { java.util.Date date = formatStr2Date(dateStr, sourceFormat); return formatDate2Str(date, targetFormat); } public static int findWeeksNoInYear() { return findWeeksNoInYear(new java.util.Date()); } public static int findWeeksNoInYear(java.util.Date date) { if (date == null) { return 0; } return findWeeksNoInYear(date2Calendar(date)); } public static int findWeeksNoInYear(Calendar calendar) { if (calendar == null) { return 0; } return calendar.get(3); } public static java.util.Date findDateInWeekOnYear(int year, int weekInYear, int dayInWeek) { Calendar calendar = Calendar.getInstance(); if (year > 0) { calendar.set(1, year); } calendar.set(3, weekInYear); calendar.set(7, dayInWeek); return calendar.getTime(); } public static java.util.Date dayBefore2Date(int days) { java.util.Date date = new java.util.Date(); return (java.util.Date)dayBefore2Object(days, null, date); } public static String dayBefore2Str(int days) { String string = formatDate2Str(); return (String)dayBefore2Object(days, null, string); } public static <T> T dayBefore2Object(int days, String format, T instance) { Calendar calendar = Calendar.getInstance(); if (days == 0) { return null; } if ((format == null) || (format.equals(""))) { format = "yyyy-MM-dd HH:mm:ss"; } calendar.add(5, days); if ((instance instanceof java.util.Date)) return calendar.getTime(); if ((instance instanceof String)) { return formatDate2Str(calendar2Date(calendar), format); } return null; } public static java.util.Date defineDayBefore2Date(java.util.Date date, int days) { java.util.Date dateInstance = new java.util.Date(); return (java.util.Date)defineDayBefore2Object(date, days, null, dateInstance); } public static String defineDayBefore2Str(java.util.Date date, int days) { String stringInstance = formatDate2Str(); return (String)defineDayBefore2Object(date, days, null, stringInstance); } public static <T> T defineDayBefore2Object(java.util.Date date, int days, String format, T instance) { if ((date == null) || (days == 0)) { return null; } if ((format == null) || (format.equals(""))) { format = "yyyy-MM-dd HH:mm:ss"; } Calendar calendar = date2Calendar(date); calendar.add(5, days); if ((instance instanceof java.util.Date)) return calendar.getTime(); if ((instance instanceof String)) { return formatDate2Str(calendar2Date(calendar), format); } return null; } public static java.util.Date monthBefore2Date(int months) { java.util.Date date = new java.util.Date(); return (java.util.Date)monthBefore2Object(months, null, date); } public static String monthBefore2Str(int months) { String string = formatDate2Str(); return (String)monthBefore2Object(months, null, string); } public static <T> T monthBefore2Object(int months, String format, T instance) { if (months == 0) { return null; } if ((format == null) || (format.equals(""))) { format = "yyyy-MM-dd HH:mm:ss"; } Calendar calendar = Calendar.getInstance(); calendar.add(2, months); if ((instance instanceof java.util.Date)) return calendar.getTime(); if ((instance instanceof String)) { return formatDate2Str(calendar2Date(calendar), format); } return null; } public static java.util.Date defineMonthBefore2Date(java.util.Date date, int months) { java.util.Date dateInstance = new java.util.Date(); return (java.util.Date)defineMonthBefore2Object(date, months, null, dateInstance); } public static String defineMonthBefore2Str(java.util.Date date, int months) { String stringInstance = formatDate2Str(); return (String)defineMonthBefore2Object(date, months, null, stringInstance); } public static <T> T defineMonthBefore2Object(java.util.Date date, int months, String format, T instance) { if (months == 0) { return null; } if ((format == null) || (format.equals(""))) { format = "yyyy-MM-dd HH:mm:ss"; } Calendar calendar = date2Calendar(date); calendar.add(2, months); if ((instance instanceof java.util.Date)) return calendar.getTime(); if ((instance instanceof String)) { return formatDate2Str(calendar2Date(calendar), format); } return null; } public static int caculate2Days(java.util.Date firstDate, java.util.Date secondDate) { Calendar calendar = Calendar.getInstance(); calendar.setTime(firstDate); int dayNum1 = calendar.get(6); calendar.setTime(secondDate); int dayNum2 = calendar.get(6); return Math.abs(dayNum1 - dayNum2); } public static int caculate2Days(Calendar firstCalendar, Calendar secondCalendar) { if (firstCalendar.after(secondCalendar)) { Calendar calendar = firstCalendar; firstCalendar = secondCalendar; secondCalendar = calendar; } long calendarNum1 = firstCalendar.getTimeInMillis(); long calendarNum2 = secondCalendar.getTimeInMillis(); return Math.abs((int)((calendarNum1 - calendarNum2) / 86400000L)); } public static java.util.Date getDefaultDate() { java.util.Date date = null; SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); try { date = dateFormat.parse("1900-01-01"); } catch (Exception localException) { } return date; } public static java.util.Date getDateByFormat(String dateString, String formatString) { if ((dateString == null) || (dateString.trim().equals(""))) { return null; } if (formatString == null) { formatString = "yyyy-MM-dd"; } SimpleDateFormat dateFormat = new SimpleDateFormat(formatString); try { return dateFormat.parse(dateString); } catch (Exception localException) { } return null; } public static String getDateTimeString(java.util.Date date, String formatString) { if (formatString == null) { formatString = "yyyy-MM-dd HH:mm:ss"; } SimpleDateFormat dateFormat = new SimpleDateFormat(formatString); String str = dateFormat.format(date); if (str.indexOf("00:00:00") > -1) { str = str.substring(0, 10); } return str; } public static String getDateTimeString(java.util.Date date) { return getDateTimeString(date, null); } public static String getDateString(java.util.Date date, String formatString) { if (formatString == null) { formatString = "yyyy-MM-dd"; } SimpleDateFormat dateFormat = new SimpleDateFormat(formatString); return dateFormat.format(date); } public static String getDateString(java.util.Date date) { return getDateTimeString(date, null); } public static String getNowDate(String formatString) { java.util.Date date = new java.util.Date(); if (formatString == null) { formatString = "yyyy-MM-dd HH:mm:ss"; } SimpleDateFormat dateFormat = new SimpleDateFormat(formatString); return dateFormat.format(date); } public static String getFormateTime(java.util.Date beginTime, java.util.Date endTime) throws Exception { long between = endTime.getTime() - beginTime.getTime(); long hour = between / 1000L / 3600L; long minute = between / 1000L % 3600L / 60L; long second = between / 1000L % 3600L % 60L; if ((hour < 0L) || (minute < 0L) || (second < 0L)) { throw new Exception("开始时间大于结束时间"); } StringBuffer active = new StringBuffer().append(hour).append(":"); if (minute < 10L) active.append("0").append(minute).append(":"); else { active.append(minute).append(":"); } if (second < 10L) active.append("0").append(second); else { active.append(second); } return active.toString(); } public static String getFormateTemeByLong(long between) { long hour = between / 3600L; long minute = between % 3600L / 60L; long second = between % 3600L % 60L; StringBuffer active = new StringBuffer().append(hour).append(":"); if (minute < 10L) active.append("0").append(minute).append(":"); else { active.append(minute).append(":"); } if (second < 10L) active.append("0").append(second); else { active.append(second); } return active.toString(); } public static void main(String[] args) { Calendar firstC = date2Calendar(formatStr2Date("2009-07-22", "yyyy-MM-dd")); Calendar secondC = date2Calendar(formatStr2Date("2009-07-18", "yyyy-MM-dd")); System.out.println(caculate2Days(firstC, secondC)); }}