java日期工具类

来源:互联网 发布:淘宝哪家纯银店是正品 编辑:程序博客网 时间:2024/05/01 06:24
 
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));  }}