各种时间日期工具类

来源:互联网 发布:qq堂mac版官方下载 编辑:程序博客网 时间:2024/05/20 15:56
package util;import java.math.BigDecimal;import java.math.RoundingMode;import java.sql.Timestamp;import java.text.DateFormat;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;public class DateUtil {        private static Log log = LogFactory.getLog(DateUtil.class);    private final static SimpleDateFormat sdfYear = new SimpleDateFormat("yyyy");    private final static SimpleDateFormat sdfDay = new SimpleDateFormat(            "yyyy-MM-dd");        private final static SimpleDateFormat sdfDays = new SimpleDateFormat(    "yyyyMMdd");    private final static SimpleDateFormat sdfTime = new SimpleDateFormat(            "yyyy-MM-dd HH:mm:ss");        /** 日期格式:"yyyy-MM-dd HH:mm:ss" **/    public static final String DATE_TIME_FORMAT_19 = "yyyy-MM-dd HH:mm:ss";        /** 日期格式:"yyyyMMddHHmmss" **/    public static final String DATE_TIME_FORMAT_14 = "yyyyMMddHHmmss";    /**     * 获取YYYY格式     *     * @return     */    public static String getYear() {        return sdfYear.format(new Date());    }    /**     * 获取YYYY-MM-DD格式     *     * @return     */    public static String getDay() {        return sdfDay.format(new Date());    }        public static String getDay(Date date) {        return sdfDay.format(date);    }        /**     * 获取YYYYMMDD格式     *     * @return     */    public static String getDays(){        return sdfDays.format(new Date());    }    /**     * 获取YYYY-MM-DD HH:mm:ss格式     *     * @return     */    public static String getTime() {        return sdfTime.format(new Date());    }        /**     * 获取YYYY-MM-DD HH:mm:ss格式     *     * @return     */    public static String getTime(Date date,String format) {        SimpleDateFormat timeFormat = new SimpleDateFormat(format);        return timeFormat.format(date);    }    /**    * @Title: compareDate    * @Description: (日期比较,如果s>=e 返回true 否则返回false)    * @param s    * @param e    * @return boolean      * @throws    * @author luguosui     */    public static boolean compareDate(String s, String e) {        if(fomatDate(s)==null||fomatDate(e)==null){            return false;        }        return fomatDate(s).getTime() >=fomatDate(e).getTime();    }    /**     * 格式化日期     *     * @return     */    public static Date fomatDate(String date) {        DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");        try {            return fmt.parse(date);        } catch (ParseException e) {            e.printStackTrace();            return null;        }    }    /**     * 格式化日期     *     * @return     */    public static Date fomatDate(String date,String format) {        DateFormat fmt = new SimpleDateFormat(format);        try {            return fmt.parse(date);        } catch (ParseException e) {            e.printStackTrace();            return null;        }    }    /**     * 校验日期是否合法     *     * @return     */    public static boolean isValidDate(String s) {        DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");        try {            fmt.parse(s);            return true;        } catch (Exception e) {            // 如果throw java.text.ParseException或者NullPointerException,就说明格式不对            return false;        }    }    public static int getDiffYear(String startTime,String endTime) {        DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");        try {            int years=(int) (((fmt.parse(endTime).getTime()-fmt.parse(startTime).getTime())/ (1000 * 60 * 60 * 24))/365);            return years;        } catch (Exception e) {            // 如果throw java.text.ParseException或者NullPointerException,就说明格式不对            return 0;        }    }      /**     * <li>功能描述:时间相减得到天数     * @param beginDateStr     * @param endDateStr     * @return     * long     * @author Administrator     */    public static long getDaySub(String beginDateStr,String endDateStr,String formatStr){        long day=0;        java.text.SimpleDateFormat format = new java.text.SimpleDateFormat(formatStr);        java.util.Date beginDate = null;        java.util.Date endDate = null;                    try {                beginDate = format.parse(beginDateStr);                endDate= format.parse(endDateStr);                day=(endDate.getTime()-beginDate.getTime())/(24*60*60*1000);            } catch (ParseException e) {                e.printStackTrace();            }            //System.out.println("相隔的天数="+day);              return day;    }        /**     * 得到n天之后的日期     * @param days     * @return     */    public static String getAfterDayDate(String days) {        int daysInt = Integer.parseInt(days);                Calendar canlendar = Calendar.getInstance(); // java.util包        canlendar.add(Calendar.DATE, daysInt); // 日期减 如果不够减会将月变动        Date date = canlendar.getTime();                SimpleDateFormat sdfd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");        String dateStr = sdfd.format(date);                return dateStr;    }        /**     * 得到指定日期n天之后的日期     * @param days     * @return     */    public static String getDateAfterDayDate(String date, String days,String format) {        int daysInt = Integer.parseInt(days);        Calendar canlendar = Calendar.getInstance(); // java.util包        canlendar.setTimeInMillis(fomatDate(date).getTime());        canlendar.add(Calendar.DATE, daysInt); // 日期减 如果不够减会将月变动        Date tempDate = canlendar.getTime();        SimpleDateFormat sdfd = new SimpleDateFormat(format);        String dateStr = sdfd.format(tempDate);                return dateStr;    }        /**     * 字符串转化为日期     *     * @param dateStr     * @return     */    public static Date dateStrConverToDate(String dateStr, String dateFormat){                Date date = null;                SimpleDateFormat smf = new SimpleDateFormat(dateFormat);                if(dateStr != null && !"".equals(dateStr)){            try {                date = smf.parse(dateStr);            } catch (ParseException e) {                e.printStackTrace();            }        }                return date;    }        /**     * 得到n天之后是周几     * @param days     * @return     */    public static String getAfterDayWeek(String days) {        int daysInt = Integer.parseInt(days);                Calendar canlendar = Calendar.getInstance(); // java.util包        canlendar.add(Calendar.DATE, daysInt); // 日期减 如果不够减会将月变动        Date date = canlendar.getTime();                SimpleDateFormat sdf = new SimpleDateFormat("E");        String dateStr = sdf.format(date);                return dateStr;    }        public static void main(String[] args) {        System.out.println(getDays());        System.out.println(getAfterDayWeek("3"));    }    /**     * 获取YYYY-MM-DD HH:mm:ss格式     *     * @return     */    public static String getTime(Date date) {        SimpleDateFormat timeFormat = new SimpleDateFormat(DATE_TIME_FORMAT_19);        return timeFormat.format(date);    }          /**         * 获取HH:mm格式         *         * @return         */            public static String getTimeShort(Date time) {          SimpleDateFormat formatter = new SimpleDateFormat("HH:mm");          String dateString = formatter.format(time);          return dateString;      }            /**     * 取得时间差     *     * @param nowTime     *            String(格式:yyyy-MM-dd HH:mm:ss)     * @param pastTime     *            String(格式:yyyy-MM-dd HH:mm:ss)     * @return long     */    public static long getSecondsCount(String nowTime, String pastTime) {        // 获取当前时间的秒数        long now = Timestamp.valueOf(nowTime).getTime() / 1000;        // 获取过去时间的秒数        long past = Timestamp.valueOf(pastTime).getTime() / 1000;        long time = now - past;        log                .info("取得时间差:" + time + "秒(" + time / 60 + "分" + time % 60                        + "秒)");        return time;    }    /**     * 取得时间差     *     * @param nowTime     *            String(格式:yyyy-MM-dd HH:mm:ss)     * @param pastTime     *            String(格式:yyyy-MM-dd HH:mm:ss)     * @return long     */    public static String getDisplayTime(String datetime) {    Calendar calendar = Calendar.getInstance();       int year = Integer.parseInt(datetime.substring(0,4));       int month = Integer.parseInt(datetime.substring(5,7));       int date = Integer.parseInt(datetime.substring(8,10));       int hour = Integer.parseInt(datetime.substring(11,13));       int minute = Integer.parseInt(datetime.substring(14,16));       //int second = Integer.parseInt(datetime.substring(17,19));       if(calendar.get(Calendar.YEAR)>year){        int y = calendar.get(Calendar.YEAR)-year;        return y+"年前";       }else if((calendar.get(Calendar.MONTH)+1)>month){        int m = (calendar.get(Calendar.MONTH)+1)-month;        return m+"个月前";       }else if(calendar.get(Calendar.DAY_OF_MONTH)>date){        int d = calendar.get(Calendar.DAY_OF_MONTH)-date;        return d+"天前";       }else if(calendar.get(Calendar.HOUR_OF_DAY)>hour){        int h = calendar.get(Calendar.HOUR_OF_DAY)-hour;        return h+"小时前";       }else if(calendar.get(Calendar.MINUTE)>minute){        int s = calendar.get(Calendar.MINUTE)-minute;        return s+"分钟前";       }else{        return "刚刚";       }    }        /**     * 取得以前的时间     *     * @return Date     */    public static Date getDateBefore(Date d, int day) {        Calendar now = Calendar.getInstance();        now.setTime(d);        now.set(Calendar.DATE, now.get(Calendar.DATE) - day);        return now.getTime();    }    /**     * 取得以前的时间     *     * @return Date     */    public static String getDateBeforeTimes(String transactionTimeType) throws ParseException {    SimpleDateFormat sdf = new SimpleDateFormat(DATE_TIME_FORMAT_19);    Date transactionTime = sdf.parse(sdf.format(new Date()));    String  transactionTimeStr=FactoryConsts.VALUE_BLANK;    if (FactoryConsts.STRING_1.equals(transactionTimeType)) {        transactionTimeStr = sdf.format(getDateBefore(transactionTime, 7)).toString();        } else if (FactoryConsts.STRING_2.equals(transactionTimeType)) {        transactionTimeStr = sdf.format(getDateBefore(transactionTime, 31)).toString();        } else if (FactoryConsts.STRING_3.equals(transactionTimeType)) {        transactionTimeStr = sdf.format(getDateBefore(transactionTime, 91)).toString();        } else if (FactoryConsts.STRING_4.equals(transactionTimeType)) {        transactionTimeStr = sdf.format(getDateBefore(transactionTime, 365)).toString();            } else {        transactionTimeStr=null;    }    return transactionTimeStr;    }        /**     * 获取指定的日期     *     * @return 返回格式:yyyyMMddHHmmss 例:20140831132002     */    public static String getIDDateTime() {        DateFormat df = new SimpleDateFormat(DATE_TIME_FORMAT_14);        return df.format(new Date());    }        /**     * 获取当前系统前一天日期     * @param date     * @return     */    public static Date getNextDay(Date date) {          Calendar calendar = Calendar.getInstance();          calendar.setTime(date);          calendar.add(Calendar.DAY_OF_MONTH, -1);          date = calendar.getTime();          return date;      }        /**     * 判断日期是不是当月最后一天     * @param date     * @return     */    public static boolean isLastDayByMonth(Date date) {          Calendar calendar = Calendar.getInstance();          calendar.setTime(date);          int lastDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);        int now = calendar.get(Calendar.DAY_OF_MONTH);          date = calendar.getTime();          return now == lastDay;      }        /**     * 获取当前月第一天     * @param date     * @return yyyyMMdd     */    public static Integer getFirstDayByMonth(Date date) {         SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");        Calendar calendar = Calendar.getInstance();          calendar.setTime(date);              calendar.set(Calendar.DAY_OF_MONTH,1);//设置为1号,当前日期既为本月第一天        String last = format.format(calendar.getTime());         return Integer.parseInt(last);      }        /**     * 获取当前系统日期     * @param date     * @return yyyyMMdd     */    public static Integer getNowDateByInteger(Date date) {          Calendar calendar = Calendar.getInstance();        calendar.setTime(date);          SimpleDateFormat format =  new SimpleDateFormat("yyyyMMdd");        String time = format.format(calendar.getTime());         return Integer.parseInt(time);    }    /**     * 获取当前系统日期     * @param date     * @return yyyyMMdd     */    public static Integer getNowDateByYMInteger(Date date) {          Calendar calendar = Calendar.getInstance();        calendar.setTime(date);          SimpleDateFormat format =  new SimpleDateFormat("yyyyMM");        String time = format.format(calendar.getTime());         return Integer.parseInt(time);    }    /**     * 获取当前系统前一天日期转数字     * @param date     * @return yyyyMMdd     */    public static Integer getlastDateByInteger(Date date) {          Calendar calendar = Calendar.getInstance();        calendar.setTime(date);        calendar.add(Calendar.DAY_OF_MONTH, -1);          SimpleDateFormat format =  new SimpleDateFormat("yyyyMMdd");        String time = format.format(calendar.getTime());         return Integer.parseInt(time);    }    /**     * 获取当前系统前一年     * @param date     * @return yyyy     */    public static String getLastYearTostr(Date date) {          Calendar calendar = Calendar.getInstance();        calendar.setTime(date);          calendar.add(Calendar.YEAR, -1);        SimpleDateFormat format =  new SimpleDateFormat("yyyy");        String time = format.format(calendar.getTime());         return time;      }    /**     * 获取当前年一个月     * @param date     * @return yyyyMM     */    public static Integer getMonthByYear(String date,String month) {          return Integer.parseInt(date.concat(month));      }        /**     * 返回指定日期的季度     *     * @param date     * @return 1,2,3,4     */    public static int getQuarterOfYear(Date date) {        Calendar calendar = Calendar.getInstance();        calendar.setTime(date);        return calendar.get(Calendar.MONTH) / 3 + 1;    }        /**     * 获取当前系统一周前日期转数字     * @param date     * @return yyyyMMdd     */    public static Integer getWeekBeforeToInteger(Date date) {          Calendar calendar = Calendar.getInstance();          calendar.setTime(date);          calendar.add(Calendar.DAY_OF_MONTH, -7);          SimpleDateFormat format =  new SimpleDateFormat("yyyyMMdd");        String time = format.format(calendar.getTime());        return Integer.parseInt(time);    }    /**     * 获取当前系统前一周前日期字符串     * @param date     * @return yyyyMMdd     */    public static String getWeekBeforeToStr(Date date) {          Calendar calendar = Calendar.getInstance();          calendar.setTime(date);          calendar.add(Calendar.DAY_OF_MONTH, -7);          SimpleDateFormat format =  new SimpleDateFormat("yyyyMMdd");        String time = format.format(calendar.getTime());        return time;    }    /**     * 获取当前系统前一年日期     * @param date     * @return yyyyMMdd     */    public static String getLastYearByYMdTostr(Date date) {          Calendar calendar = Calendar.getInstance();        calendar.setTime(date);          calendar.add(Calendar.YEAR, -1);        SimpleDateFormat format =  new SimpleDateFormat("yyyyMMdd");        String time = format.format(calendar.getTime());         return time;      }    /**     * 获取当前系统前一年日期     * @param date     * @return yyyyMMdd     */    public static Integer getLastYearByYMToInteger(Date date) {          Calendar calendar = Calendar.getInstance();        calendar.setTime(date);          calendar.add(Calendar.YEAR, -1);        SimpleDateFormat format =  new SimpleDateFormat("yyyyMM");        String time = format.format(calendar.getTime());         return Integer.parseInt(time);      }    /**     * 获取当前年份第一个月数字     * @param date     * @return yyyyMM     */    public static Integer getFirstMonthYMtoInteger(Date date) {         SimpleDateFormat format = new SimpleDateFormat("yyyyMM");        Calendar calendar = Calendar.getInstance();          calendar.setTime(date);              calendar.set(Calendar.MONTH, 0);          String last = format.format(calendar.getTime());         return Integer.parseInt(last);      }    /**     * 获取当前年份第一个月数字     * @param date     * @return yyyyMM     */    public static String getFormatStrDate(Object ojb) {          String str=String.valueOf(ojb);        int length=str.length();        if(length==4){            return str;        }else if(length==6){            StringBuffer sb=new StringBuffer();            sb.append(str.substring(0, 4)+"-"+str.substring(4));                        return sb.toString();        }else if(length==8){            StringBuffer sb=new StringBuffer();            sb.append(str.substring(0, 4)+"-"+str.substring(4,6)+"-"+str.substring(6));                        return sb.toString();        }        return null;      }        /**     * 获取当前系统前一月日期     * @param date     * @return yyyyMMdd     */    public static Integer getLastMonthByInteger(Date date) {          Calendar calendar = Calendar.getInstance();        calendar.setTime(date);          calendar.add(Calendar.MONTH, -1);        SimpleDateFormat format =  new SimpleDateFormat("yyyyMMdd");        String time = format.format(calendar.getTime());         return Integer.parseInt(time);      }        /**     * 获取当前系统前一月日期     * @param date     * @return     */    public static Date getNextMonth(Date date) {          Calendar calendar = Calendar.getInstance();        calendar.setTime(date);        calendar.add(Calendar.MONTH, -1);         date = calendar.getTime();                 return date;      }        /**     * 获取当前月最后一天     * @param date     * @return yyyyMMdd     */    public static Integer getLastDayByMonth(Date date) {         SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");        Calendar calendar = Calendar.getInstance();          calendar.setTime(date);              calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));          String last = format.format(calendar.getTime());         return Integer.parseInt(last);      }        /**     * 获取当前系统前一天日期字符串     * @param date     * @return yyyyMMdd     */    public static String getNextDayToStr(Date date) {          Calendar calendar = Calendar.getInstance();          calendar.setTime(date);          calendar.add(Calendar.DAY_OF_MONTH, -1);          SimpleDateFormat format =  new SimpleDateFormat("yyyyMMdd");        String time = format.format(calendar.getTime());        return time;    }        /**     * 获取当前系统前一月日期     * @param date     * @return     */    public static Date getLastMonth(Date date) {          Calendar calendar = Calendar.getInstance();        calendar.setTime(date);          calendar.add(Calendar.MONTH, -1);        calendar.getTime();        return calendar.getTime();      }        /**     * 获取当前系统前一月日期数字     * @param date     * @return yyyyMM     */    public static Integer getNextMonthYMToInteger(Date date) {          Calendar calendar = Calendar.getInstance();        calendar.setTime(date);          calendar.add(Calendar.MONTH, -1);        SimpleDateFormat format =  new SimpleDateFormat("yyyyMM");        String time = format.format(calendar.getTime());        return  Integer.parseInt(time);      }        /**     * 转换成BigDecimal并格式化保留小数点2位     * @author jihb     * @param obj     * @return     */    public static  BigDecimal formatComma2BigDecimal(Object obj) {          String val = String.valueOf(obj);          if (val == null)              return new BigDecimal("0.00");           val = val.replaceAll(",", "");          if (!isNumber(val))              return new BigDecimal("0.00");           BigDecimal decimal = new BigDecimal(val);          decimal = decimal.setScale(2, RoundingMode.HALF_UP);           return decimal;       }        /**     * 判断是否为数字     * @author jihb     * @param obj     * @return     */    public static   boolean isNumber(String value) {          return isInteger(value) || isDouble(value);      }        /**     * 判断是否为Integer     * @author jihb     * @param obj     * @return     */    public static   boolean isInteger(String value) {          try {              Integer.parseInt(value);              return true;          } catch (NumberFormatException e) {              return false;          }      }        /**     * 判断是否为Double     * @author jihb     * @param obj     * @return     */    public static   boolean isDouble(String value) {          try {              Double.parseDouble(value);              if (value.contains("."))                  return true;              return false;          } catch (NumberFormatException e) {              return false;          }      }}


0 0
原创粉丝点击