java日期时间工具类

来源:互联网 发布:最终幻想13 pc 优化 编辑:程序博客网 时间:2024/05/17 21:50
import java.sql.Time;   import java.sql.Timestamp;   import java.text.ParseException;   import java.text.SimpleDateFormat;   import java.util.Calendar;   import java.util.Date;   import java.util.GregorianCalendar;         public class DateUtil {       /**       * getDateStr get a string with format YYYY-MM-DD from a Date object       *        * @param date       *            date       * @return String       */      static public String getDateStr(Date date) {           SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");           return format.format(date);       }             static public String getYear(Date date) {           SimpleDateFormat format = new SimpleDateFormat("yyyy");           return format.format(date);       }       static public String getDateStrC(Date date) {           SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日");           return format.format(date);       }         static public String getDateStrCompact(Date date) {           if (date == null)               return "";           SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");           String str = format.format(date);           return str;       }         /**       * getDateStr get a string with format YYYY-MM-DD HH:mm:ss from a Date       * object       *        * @param date       *            date       * @return String       */      static public String getDateTimeStr(Date date) {           SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");           return format.format(date);       }         static public String getDateTimeStrC(Date date) {           SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");           return format.format(date);       }         public static String getCurDateStr(String pattern) {           SimpleDateFormat format = new SimpleDateFormat(pattern);           return format.format(new Date());       }         /**       * Parses text in 'YYYY-MM-DD' format to produce a date.       *        * @param s       *            the text       * @return Date       * @throws ParseException       */      static public Date parseDate(String s) throws ParseException {           SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");           return format.parse(s);       }         static public Date parseDateC(String s) throws ParseException {           SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日");           return format.parse(s);       }         /**       * Parses text in 'YYYY-MM-DD' format to produce a date.       *        * @param s       *            the text       * @return Date       * @throws ParseException       */      static public Date parseDateTime(String s) throws ParseException {           SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");           return format.parse(s);       }              static public Date parseDateTimeC(String s) throws ParseException {           SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");           return format.parse(s);       }         /**       * Parses text in 'HH:mm:ss' format to produce a time.       *        * @param s       *            the text       * @return Date       * @throws ParseException       */      static public Date parseTime(String s) throws ParseException {           SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss");           return format.parse(s);       }         static public Date parseTimeC(String s) throws ParseException {           SimpleDateFormat format = new SimpleDateFormat("HH时mm分ss秒");           return format.parse(s);       }         static public int yearOfDate(Date s) throws ParseException {           SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");           String d = format.format(s);           return Integer.parseInt(d.substring(0, 4));       }         static public int monthOfDate(Date s) throws ParseException {           SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");           String d = format.format(s);           return Integer.parseInt(d.substring(5, 7));       }         static public int dayOfDate(Date s) throws ParseException {           SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");           String d = format.format(s);           return Integer.parseInt(d.substring(8, 10));       }         static public String getDateTimeStr(java.sql.Date date, double time) {           int year = date.getYear() + 1900;           int month = date.getMonth() + 1;           int day = date.getDate();           String dateStr = year + "-" + month + "-" + day;           Double d = new Double(time);           String timeStr = String.valueOf(d.intValue()) + ":00:00";             return dateStr + " " + timeStr;       }         /**       * Get the total month from two date.       *        * @param sd       *            the start date       * @param ed       *            the end date       * @return int month form the start to end date       * @throws ParseException       */      static public int diffDateM(Date sd, Date ed) throws ParseException {           return (ed.getYear() - sd.getYear()) * 12 + ed.getMonth()                   - sd.getMonth() + 1;       }         static public int diffDateD(Date sd, Date ed) throws ParseException {           return Math.round((ed.getTime() - sd.getTime()) / 86400000) + 1;       }         static public int diffDateM(int sym, int eym) throws ParseException {           return (Math.round(eym / 100) - Math.round(sym / 100)) * 12                  + (eym % 100 - sym % 100) + 1;       }         static public java.sql.Date getNextMonthFirstDate(java.sql.Date date)               throws ParseException {           Calendar scalendar = new GregorianCalendar();           scalendar.setTime(date);           scalendar.add(Calendar.MONTH, 1);           scalendar.set(Calendar.DATE, 1);           return new java.sql.Date(scalendar.getTime().getTime());       }         static public java.sql.Date getFrontDateByDayCount(java.sql.Date date,               int dayCount) throws ParseException {           Calendar scalendar = new GregorianCalendar();           scalendar.setTime(date);           scalendar.add(Calendar.DATE, -dayCount);           return new java.sql.Date(scalendar.getTime().getTime());       }         /**       * Get first day of the month.       *        * @param year       *            the year       * @param month       *            the month       * @return Date first day of the month.       * @throws ParseException       */      static public Date getFirstDay(String year, String month)               throws ParseException {           SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");           return format.parse(year + "-" + month + "-1");       }         static public Date getFirstDay(int year, int month) throws ParseException {           SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");           return format.parse(year + "-" + month + "-1");       }         static public Date getLastDay(String year, String month)               throws ParseException {           SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");           Date date = format.parse(year + "-" + month + "-1");             Calendar scalendar = new GregorianCalendar();           scalendar.setTime(date);           scalendar.add(Calendar.MONTH, 1);           scalendar.add(Calendar.DATE, -1);           date = scalendar.getTime();           return date;       }         static public Date getLastDay(int year, int month) throws ParseException {           SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");           Date date = format.parse(year + "-" + month + "-1");             Calendar scalendar = new GregorianCalendar();           scalendar.setTime(date);           scalendar.add(Calendar.MONTH, 1);           scalendar.add(Calendar.DATE, -1);           date = scalendar.getTime();           return date;       }         /**       * getToday get todat string with format YYYY-MM-DD from a Date object       *        * @param date       *            date       * @return String       */        static public String getTodayStr() throws ParseException {           Calendar calendar = Calendar.getInstance();           return getDateStr(calendar.getTime());       }         static public Date getToday() throws ParseException {           return new Date(System.currentTimeMillis());       }         static public String getTodayAndTime() {           return new Timestamp(System.currentTimeMillis()).toString();       }         static public String getTodayC() throws ParseException {           Calendar calendar = Calendar.getInstance();           return getDateStrC(calendar.getTime());       }         static public int getThisYearMonth() throws ParseException {           Date today = Calendar.getInstance().getTime();           return (today.getYear() + 1900) * 100 + today.getMonth() + 1;       }         static public int getYearMonth(Date date) throws ParseException {           return (date.getYear() + 1900) * 100 + date.getMonth() + 1;       }         // 获取相隔月数       static public long getDistinceMonth(String beforedate, String afterdate)               throws ParseException {           SimpleDateFormat d = new SimpleDateFormat("yyyy-MM-dd");           long monthCount = 0;           try {               java.util.Date d1 = d.parse(beforedate);               java.util.Date d2 = d.parse(afterdate);                 monthCount = (d2.getYear() - d1.getYear()) * 12 + d2.getMonth()                       - d1.getMonth();               // dayCount = (d2.getTime()-d1.getTime())/(30*24*60*60*1000);             } catch (ParseException e) {               System.out.println("Date parse error!");               // throw e;           }           return monthCount;       }         // 获取相隔天数       static public long getDistinceDay(String beforedate, String afterdate)               throws ParseException {           SimpleDateFormat d = new SimpleDateFormat("yyyy-MM-dd");           long dayCount = 0;           try {               java.util.Date d1 = d.parse(beforedate);               java.util.Date d2 = d.parse(afterdate);                 dayCount = (d2.getTime() - d1.getTime()) / (24 * 60 * 60 * 1000);             } catch (ParseException e) {               System.out.println("Date parse error!");               // throw e;           }           return dayCount;       }         // 获取相隔天数       static public long getDistinceDay(Date beforedate, Date afterdate)               throws ParseException {           long dayCount = 0;             try {               dayCount = (afterdate.getTime() - beforedate.getTime())                       / (24 * 60 * 60 * 1000);             } catch (Exception e) {               // System.out.println("Date parse error!");               // // throw e;           }           return dayCount;       }         static public long getDistinceDay(java.sql.Date beforedate,               java.sql.Date afterdate) throws ParseException {           long dayCount = 0;             try {               dayCount = (afterdate.getTime() - beforedate.getTime())                       / (24 * 60 * 60 * 1000);             } catch (Exception e) {               // System.out.println("Date parse error!");               // // throw e;           }           return dayCount;       }         // 获取相隔天数       static public long getDistinceDay(String beforedate) throws ParseException {           return getDistinceDay(beforedate, getTodayStr());       }         // 获取相隔时间数       static public long getDistinceTime(String beforeDateTime,               String afterDateTime) throws ParseException {           SimpleDateFormat d = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");           long timeCount = 0;           try {               java.util.Date d1 = d.parse(beforeDateTime);               java.util.Date d2 = d.parse(afterDateTime);                 timeCount = (d2.getTime() - d1.getTime()) / (60 * 60 * 1000);             } catch (ParseException e) {               System.out.println("Date parse error!");               throw e;           }           return timeCount;       }         // 获取相隔时间数       static public long getDistinceTime(String beforeDateTime)               throws ParseException {           return getDistinceTime(beforeDateTime, new Timestamp(System                   .currentTimeMillis()).toLocaleString());       }         // 获取相隔分钟数       static public long getDistinceMinute(String beforeDateTime,               String afterDateTime) throws ParseException {           SimpleDateFormat d = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");           long timeCount = 0;           try {               java.util.Date d1 = d.parse(beforeDateTime);               java.util.Date d2 = d.parse(afterDateTime);