java日期處理工具類_java

來源:互聯網
上載者:User

本文針對日期處理進行學習使用,主要分為兩部分,下面為大傢具體介紹一下

第一部分:日期處理基礎知識

Date 類
作用:最主要的作用就是獲得目前時間
將日期轉換為標準格式

Date date = new Date();SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String str = sdf.format(date);System.out.println(“2015-10-16 14:59:52”);

將String轉換為Date類型

String day = "2014-6-5 10:30:30";SimpleDateFormat d2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");Date date2 = d2.parse(day);System.out.println(“Thu Jun 05 10:30:30 CST 2014”);

Calendar 類的應用

java.util.Calendar 類是一個抽象類別,可以通過調用 getInstance() 靜態方法擷取一個 Calendar 對象,此對象已由當前日期時間初始化,即預設代表目前時間

 Calendar c = Calendar.getInstance();int year = c.get(Calender.YEAR);int month= c.get(Calender.MONTH)+1; //擷取月份,0表示1月份int day = c.get(Calender.DAY_OF_MONTH);int hour= c.get(Calender.HOUR_OF_DAY);int minute= c.get(Calender.MINUTE);int second = c.get(Calender.SECOND);

比較2個時間相差的月份

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");DateTime d1 = new DateTime(format.parse("2016-10-31 00:00:00"));DateTime d2 = new DateTime(format.parse("2015-1-31 00:00:00"));System.out.println(Math.abs(Months.monthsBetween(d1,d2).getMonths()));

第二部分:日期處理工具類

package com.analysys.website.control; import java.text.ParseException;import java.text.ParsePosition;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util.GregorianCalendar; import org.apache.commons.lang.StringUtils;import org.apache.log4j.Logger; /**  * 日期處理工具類  * @author dylan_xu  * @date Mar 11, 2012  * @modified by  * @modified date  * @since JDK1.6  * @see com.util.DateUtil  */   public class DateUtil {   // ~ Static fields/initializers   // =============================================     private static Logger logger = Logger.getLogger(DateUtil.class);   private static String defaultDatePattern = null;   private static String timePattern = "HH:mm";   private static Calendar cale = Calendar.getInstance();   public static final String TS_FORMAT = DateUtil.getDatePattern() + " HH:mm:ss.S";   /** 日期格式yyyy-MM字串常量 */   private static final String MONTH_FORMAT = "yyyy-MM";   /** 日期格式yyyy-MM-dd字串常量 */   private static final String DATE_FORMAT = "yyyy-MM-dd";   /** 日期格式HH:mm:ss字串常量 */   private static final String HOUR_FORMAT = "HH:mm:ss";   /** 日期格式yyyy-MM-dd HH:mm:ss字串常量 */   private static final String DATETIME_FORMAT = "yyyy-MM-dd HH:mm:ss";   /** 某天開始時分秒字串常量 00:00:00 */   private static final String DAY_BEGIN_STRING_HHMMSS = " 00:00:00";   /** 某天結束時分秒字串常量 23:59:59 */   public static final String DAY_END_STRING_HHMMSS = " 23:59:59";   private static SimpleDateFormat sdf_date_format = new SimpleDateFormat(DATE_FORMAT);   private static SimpleDateFormat sdf_hour_format = new SimpleDateFormat(HOUR_FORMAT);   private static SimpleDateFormat sdf_datetime_format = new SimpleDateFormat(DATETIME_FORMAT);         // ~ Methods   // ================================================================     public DateUtil() {   }     /**    * 獲得伺服器當前日期及時間,以格式為:yyyy-MM-dd HH:mm:ss的日期文字形式返回    * @author dylan_xu    * @date Mar 11, 2012    * @return    */   public static String getDateTime() {     try {       return sdf_datetime_format.format(cale.getTime());     } catch (Exception e) {       logger.debug("DateUtil.getDateTime():" + e.getMessage());       return "";     }   }     /**    * 獲得伺服器當前日期,以格式為:yyyy-MM-dd的日期文字形式返回    * @author dylan_xu    * @date Mar 11, 2012    * @return    */   public static String getDate() {     try {       return sdf_date_format.format(cale.getTime());     } catch (Exception e) {       logger.debug("DateUtil.getDate():" + e.getMessage());       return "";     }   }     /**    * 獲得伺服器目前時間,以格式為:HH:mm:ss的日期文字形式返回    * @author dylan_xu    * @date Mar 11, 2012    * @return    */   public static String getTime() {     String temp = " ";     try {       temp += sdf_hour_format.format(cale.getTime());       return temp;     } catch (Exception e) {       logger.debug("DateUtil.getTime():" + e.getMessage());       return "";     }   }     /**    * 統計時開始日期的預設值    * @author dylan_xu    * @date Mar 11, 2012    * @return    */   public static String getStartDate() {     try {       return getYear() + "-01-01";     } catch (Exception e) {       logger.debug("DateUtil.getStartDate():" + e.getMessage());       return "";     }   }     /**    * 統計時結束日期的預設值    * @author dylan_xu    * @date Mar 11, 2012    * @return    */   public static String getEndDate() {     try {       return getDate();     } catch (Exception e) {       logger.debug("DateUtil.getEndDate():" + e.getMessage());       return "";     }   }     /**    * 獲得伺服器當前日期的年份    * @author dylan_xu    * @date Mar 11, 2012    * @return    */   public static String getYear() {     try {       return String.valueOf(cale.get(Calendar.YEAR));     } catch (Exception e) {       logger.debug("DateUtil.getYear():" + e.getMessage());       return "";     }   }     /**    * 獲得伺服器當前日期的月份    * @author dylan_xu    * @date Mar 11, 2012    * @return    */   public static String getMonth() {     try {       java.text.DecimalFormat df = new java.text.DecimalFormat();       df.applyPattern("00;00");       return df.format((cale.get(Calendar.MONTH) + 1));     } catch (Exception e) {       logger.debug("DateUtil.getMonth():" + e.getMessage());       return "";     }   }     /**    * 獲得伺服器在當前月中天數    * @author dylan_xu    * @date Mar 11, 2012    * @return    */   public static String getDay() {     try {       return String.valueOf(cale.get(Calendar.DAY_OF_MONTH));     } catch (Exception e) {       logger.debug("DateUtil.getDay():" + e.getMessage());       return "";     }   }     /**    * 比較兩個日期相差的天數    * @author dylan_xu    * @date Mar 11, 2012    * @param date1    * @param date2    * @return    */   public static int getMargin(String date1, String date2) {     int margin;     try {       ParsePosition pos = new ParsePosition(0);       ParsePosition pos1 = new ParsePosition(0);       Date dt1 = sdf_date_format.parse(date1, pos);       Date dt2 = sdf_date_format.parse(date2, pos1);       long l = dt1.getTime() - dt2.getTime();       margin = (int) (l / (24 * 60 * 60 * 1000));       return margin;     } catch (Exception e) {       logger.debug("DateUtil.getMargin():" + e.toString());       return 0;     }   }     /**    * 比較兩個日期相差的天數    * @author dylan_xu    * @date Mar 11, 2012    * @param date1    * @param date2    * @return    */   public static double getDoubleMargin(String date1, String date2) {     double margin;     try {       ParsePosition pos = new ParsePosition(0);       ParsePosition pos1 = new ParsePosition(0);       Date dt1 = sdf_datetime_format.parse(date1, pos);       Date dt2 = sdf_datetime_format.parse(date2, pos1);       long l = dt1.getTime() - dt2.getTime();       margin = (l / (24 * 60 * 60 * 1000.00));       return margin;     } catch (Exception e) {       logger.debug("DateUtil.getMargin():" + e.toString());       return 0;     }   }     /**    * 比較兩個日期相差的月數    * @author dylan_xu    * @date Mar 11, 2012    * @param date1    * @param date2    * @return    */   public static int getMonthMargin(String date1, String date2) {     int margin;     try {       margin = (Integer.parseInt(date2.substring(0, 4)) - Integer.parseInt(date1.substring(0, 4))) * 12;       margin += (Integer.parseInt(date2.substring(4, 7).replaceAll("-0",           "-")) - Integer.parseInt(date1.substring(4, 7).replaceAll("-0", "-")));       return margin;     } catch (Exception e) {       logger.debug("DateUtil.getMargin():" + e.toString());       return 0;     }   }     /**    * 返回日期加X天后的日期    * @author dylan_xu    * @date Mar 11, 2012    * @param date    * @param i    * @return    */   public static String addDay(String date, int i) {     try {       GregorianCalendar gCal = new GregorianCalendar(           Integer.parseInt(date.substring(0, 4)),            Integer.parseInt(date.substring(5, 7)) - 1,            Integer.parseInt(date.substring(8, 10)));       gCal.add(GregorianCalendar.DATE, i);       return sdf_date_format.format(gCal.getTime());     } catch (Exception e) {       logger.debug("DateUtil.addDay():" + e.toString());       return getDate();     }   }     /**    * 返回日期加X月後的日期    * @author dylan_xu    * @date Mar 11, 2012    * @param date    * @param i    * @return    */   public static String addMonth(String date, int i) {     try {       GregorianCalendar gCal = new GregorianCalendar(           Integer.parseInt(date.substring(0, 4)),            Integer.parseInt(date.substring(5, 7)) - 1,            Integer.parseInt(date.substring(8, 10)));       gCal.add(GregorianCalendar.MONTH, i);       return sdf_date_format.format(gCal.getTime());     } catch (Exception e) {       logger.debug("DateUtil.addMonth():" + e.toString());       return getDate();     }   }     /**    * 返回日期加X年後的日期    * @author dylan_xu    * @date Mar 11, 2012    * @param date    * @param i    * @return    */   public static String addYear(String date, int i) {     try {       GregorianCalendar gCal = new GregorianCalendar(           Integer.parseInt(date.substring(0, 4)),            Integer.parseInt(date.substring(5, 7)) - 1,            Integer.parseInt(date.substring(8, 10)));       gCal.add(GregorianCalendar.YEAR, i);       return sdf_date_format.format(gCal.getTime());     } catch (Exception e) {       logger.debug("DateUtil.addYear():" + e.toString());       return "";     }   }     /**    * 返回某年某月中的最大天    * @author dylan_xu    * @date Mar 11, 2012    * @param year    * @param month    * @return    */   public static int getMaxDay(int iyear, int imonth) {     int day = 0;     try {       if (imonth == 1 || imonth == 3 || imonth == 5 || imonth == 7           || imonth == 8 || imonth == 10 || imonth == 12) {         day = 31;       } else if (imonth == 4 || imonth == 6 || imonth == 9 || imonth == 11) {         day = 30;       } else if ((0 == (iyear % 4)) && (0 != (iyear % 100)) || (0 == (iyear % 400))) {         day = 29;       } else {         day = 28;       }       return day;     } catch (Exception e) {       logger.debug("DateUtil.getMonthDay():" + e.toString());       return 1;     }   }     /**    * 格式化日期    * @author dylan_xu    * @date Mar 11, 2012    * @param orgDate    * @param Type    * @param Span    * @return    */   @SuppressWarnings("static-access")   public String rollDate(String orgDate, int Type, int Span) {     try {       String temp = "";       int iyear, imonth, iday;       int iPos = 0;       char seperater = '-';       if (orgDate == null || orgDate.length() < 6) {         return "";       }         iPos = orgDate.indexOf(seperater);       if (iPos > 0) {         iyear = Integer.parseInt(orgDate.substring(0, iPos));         temp = orgDate.substring(iPos + 1);       } else {         iyear = Integer.parseInt(orgDate.substring(0, 4));         temp = orgDate.substring(4);       }         iPos = temp.indexOf(seperater);       if (iPos > 0) {         imonth = Integer.parseInt(temp.substring(0, iPos));         temp = temp.substring(iPos + 1);       } else {         imonth = Integer.parseInt(temp.substring(0, 2));         temp = temp.substring(2);       }         imonth--;       if (imonth < 0 || imonth > 11) {         imonth = 0;       }         iday = Integer.parseInt(temp);       if (iday < 1 || iday > 31)         iday = 1;         Calendar orgcale = Calendar.getInstance();       orgcale.set(iyear, imonth, iday);       temp = this.rollDate(orgcale, Type, Span);       return temp;     } catch (Exception e) {       return "";     }   }     public static String rollDate(Calendar cal, int Type, int Span) {     try {       String temp = "";       Calendar rolcale;       rolcale = cal;       rolcale.add(Type, Span);       temp = sdf_date_format.format(rolcale.getTime());       return temp;     } catch (Exception e) {       return "";     }   }     /**    * 返回預設的日期格式    * @author dylan_xu    * @date Mar 11, 2012    * @return    */   public static synchronized String getDatePattern() {     defaultDatePattern = "yyyy-MM-dd";     return defaultDatePattern;   }     /**    * 將指定日期按預設格式進行格式代化成字串後輸出如:yyyy-MM-dd    * @author dylan_xu    * @date Mar 11, 2012    * @param aDate    * @return    */   public static final String getDate(Date aDate) {     SimpleDateFormat df = null;     String returnValue = "";     if (aDate != null) {       df = new SimpleDateFormat(getDatePattern());       returnValue = df.format(aDate);     }     return (returnValue);   }     /**    * 取得給定日期的時間字串,格式為當前預設時間格式    * @author dylan_xu    * @date Mar 11, 2012    * @param theTime    * @return    */   public static String getTimeNow(Date theTime) {     return getDateTime(timePattern, theTime);   }     /**    * 取得目前時間的Calendar日曆對象    * @author dylan_xu    * @date Mar 11, 2012    * @return    * @throws ParseException    */   public Calendar getToday() throws ParseException {     Date today = new Date();     SimpleDateFormat df = new SimpleDateFormat(getDatePattern());     String todayAsString = df.format(today);     Calendar cal = new GregorianCalendar();     cal.setTime(convertStringToDate(todayAsString));     return cal;   }     /**    * 將日期類轉換成指定格式的字串形式    * @author dylan_xu    * @date Mar 11, 2012    * @param aMask    * @param aDate    * @return    */   public static final String getDateTime(String aMask, Date aDate) {     SimpleDateFormat df = null;     String returnValue = "";       if (aDate == null) {       logger.error("aDate is null!");     } else {       df = new SimpleDateFormat(aMask);       returnValue = df.format(aDate);     }     return (returnValue);   }     /**    * 將指定的日期轉換成預設格式的字串形式    * @author dylan_xu    * @date Mar 11, 2012    * @param aDate    * @return    */   public static final String convertDateToString(Date aDate) {     return getDateTime(getDatePattern(), aDate);   }     /**    * 將日期文字按指定格式轉換成日期類型    * @author dylan_xu    * @date Mar 11, 2012    * @param aMask 指定的日期格式,如:yyyy-MM-dd    * @param strDate 待轉換的日期文字    * @return    * @throws ParseException    */   public static final Date convertStringToDate(String aMask, String strDate)       throws ParseException {     SimpleDateFormat df = null;     Date date = null;     df = new SimpleDateFormat(aMask);       if (logger.isDebugEnabled()) {       logger.debug("converting '" + strDate + "' to date with mask '" + aMask + "'");     }     try {       date = df.parse(strDate);     } catch (ParseException pe) {       logger.error("ParseException: " + pe);       throw pe;     }     return (date);   }     /**    * 將日期文字按預設格式轉換成日期類型    * @author dylan_xu    * @date Mar 11, 2012    * @param strDate    * @return    * @throws ParseException    */   public static Date convertStringToDate(String strDate)       throws ParseException {     Date aDate = null;       try {       if (logger.isDebugEnabled()) {         logger.debug("converting date with pattern: " + getDatePattern());       }       aDate = convertStringToDate(getDatePattern(), strDate);     } catch (ParseException pe) {       logger.error("Could not convert '" + strDate + "' to a date, throwing exception");       throw new ParseException(pe.getMessage(), pe.getErrorOffset());     }     return aDate;   }     /**    * 返回一個JAVA簡單類型的日期文字    * @author dylan_xu    * @date Mar 11, 2012    * @return    */   public static String getSimpleDateFormat() {     SimpleDateFormat formatter = new SimpleDateFormat();     String NDateTime = formatter.format(new Date());     return NDateTime;   }       /**    * 將指定字串格式的日期與目前時間比較    * @author DYLAN    * @date Feb 17, 2012    * @param strDate 需要比較時間    * @return    *   <p>    *   int code    *   <ul>    *   <li>-1 目前時間 < 比較時間 </li>    *   <li> 0 目前時間 = 比較時間 </li>    *   <li>>=1目前時間 > 比較時間 </li>    *   </ul>    *   </p>    */   public static int compareToCurTime (String strDate) {     if (StringUtils.isBlank(strDate)) {       return -1;     }     Date curTime = cale.getTime();     String strCurTime = null;     try {       strCurTime = sdf_datetime_format.format(curTime);     } catch (Exception e) {       if (logger.isDebugEnabled()) {         logger.debug("[Could not format '" + strDate + "' to a date, throwing exception:" + e.getLocalizedMessage() + "]");       }     }     if (StringUtils.isNotBlank(strCurTime)) {       return strCurTime.compareTo(strDate);     }     return -1;   }       /**    * 為查詢日期添加最小時間    *    * @param 目標類型Date    * @param 轉換參數Date    * @return    */   @SuppressWarnings("deprecation")   public static Date addStartTime(Date param) {     Date date = param;     try {       date.setHours(0);       date.setMinutes(0);       date.setSeconds(0);       return date;     } catch (Exception ex) {       return date;     }   }     /**    * 為查詢日期添加最大時間    *    * @param 目標類型Date    * @param 轉換參數Date    * @return    */   @SuppressWarnings("deprecation")   public static Date addEndTime(Date param) {     Date date = param;     try {       date.setHours(23);       date.setMinutes(59);       date.setSeconds(0);       return date;     } catch (Exception ex) {       return date;     }   }     /**    * 返回系統現在年份中指定月份的天數    *    * @param 月份month    * @return 指定月的總天數    */   @SuppressWarnings("deprecation")   public static String getMonthLastDay(int month) {     Date date = new Date();     int[][] day = { { 0, 30, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 },         { 0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 } };     int year = date.getYear() + 1900;     if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {       return day[1][month] + "";     } else {       return day[0][month] + "";     }   }     /**    * 返回指定年份中指定月份的天數    *    * @param 年份year    * @param 月份month    * @return 指定月的總天數    */   public static String getMonthLastDay(int year, int month) {     int[][] day = { { 0, 30, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 },         { 0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 } };     if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {       return day[1][month] + "";     } else {       return day[0][month] + "";     }   }     /**    * 判斷是平年還是閏年    * @author dylan_xu    * @date Mar 11, 2012    * @param year    * @return    */   public static boolean isLeapyear(int year) {     if ((year % 4 == 0 && year % 100 != 0) || (year % 400) == 0) {       return true;     } else {       return false;     }   }     /**    * 取得目前時間的日戳    * @author dylan_xu    * @date Mar 11, 2012    * @return    */   @SuppressWarnings("deprecation")   public static String getTimestamp() {     Date date = cale.getTime();     String timestamp = "" + (date.getYear() + 1900) + date.getMonth()         + date.getDate() + date.getMinutes() + date.getSeconds()         + date.getTime();     return timestamp;   }     /**    * 取得指定時間的日戳    *    * @return    */   @SuppressWarnings("deprecation")   public static String getTimestamp(Date date) {     String timestamp = "" + (date.getYear() + 1900) + date.getMonth()         + date.getDate() + date.getMinutes() + date.getSeconds()         + date.getTime();     return timestamp;   }     public static void main(String[] args) {     System.out.println(getYear() + "|" + getMonth() + "|" + getDate());   } } 

以上就是本文的全部內容,希望對大家的學習有所協助。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.