zoukankan      html  css  js  c++  java
  • DateUtil工具类

    package com.autoserve.mh.common.util;
     
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
     
    public class DateUtil {
     
     /**
      * format格式:yyyyMMddHHmmssSSS
      */
     public static SimpleDateFormat FORMAT1 = new SimpleDateFormat(
       "yyyyMMddHHmmssSSS");
     
     /**
      * format格式:yyyy-MM-dd HH:mm:ss
      */
     public static SimpleDateFormat FORMAT2 = new SimpleDateFormat(
       "yyyy-MM-dd HH:mm:ss");
     
     /**
      * format格式:yyyy-MM-dd
      */
     public static SimpleDateFormat FORMAT3 = new SimpleDateFormat("yyyy-MM-dd");
     
     /**
      * format格式:yyyyMMdd
      */
     public static SimpleDateFormat FORMAT4 = new SimpleDateFormat("yyyyMMdd");
     
     /**
      * 正则判断是否日期格式(yyyy-mm-dd)
      */
     public static Pattern pat = Pattern.compile("^((\d{2}(([02468][048])|([13579][26]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|([1-2][0-9])))))|(\d{2}(([02468][1235679])|([13579][01345789]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))");
     
     /**
      * 获取当前时间
      *
      * @return
      */
     public static Date getCurrentTime() {
      return Calendar.getInstance().getTime();
     }
     
     /**
      * 获取当前时间格式yyyyMMddHHmmssSSS 的时间
      *
      * @return
      */
     public static String getCurrentTimeStrMill() {
      return FORMAT1.format(getCurrentTime());
     }
     
     /**
      * 获取当前时间格式 yyyy-MM-dd HH:mm:ss 的时间
      *
      * @return
      */
     public static String getCurrentTimeStr() {
      return FORMAT2.format(getCurrentTime());
     }
     
     /**
      * 获取当前时间格式 yyyy-MM-dd 的时间
      *
      * @return
      */
     public static String getCurrentDateStr(Date date) {
      return FORMAT3.format(getCurrentTime());
     }
     
     /**
      * 当前时间+num个月的时间
      *
      * @return
      */
     public static Date monthAdd(int num) {
      Calendar cal = Calendar.getInstance();
      cal.add(Calendar.MONTH, num);
      return cal.getTime();
     }
     
     /**
      * 判断两个日期的大小(只比较yyyy-MM-dd形式,忽略时分秒)
      * <p>
      * dt1的日期(如2015-10-06)在dt2(如2015-06-05)之前返回1,之后返回-1,否则返回0
      * </p>
      *
      * @return
      */
     public static int compareDate(Date dt1, Date dt2) {
     
      String[] dtStr1 = FORMAT3.format(dt1).split("-");
      Calendar cal1 = Calendar.getInstance();
      cal1.set(Integer.valueOf(dtStr1[0]), Integer.valueOf(dtStr1[1]),
        Integer.valueOf(dtStr1[2]), 0, 0, 0);
     
      String[] dtStr2 = FORMAT3.format(dt2).split("-");
      Calendar cal2 = Calendar.getInstance();
      cal2.set(Integer.valueOf(dtStr2[0]), Integer.valueOf(dtStr2[1]),
        Integer.valueOf(dtStr2[2]), 0, 0, 0);
      // 获取日期的long值
      if (cal1.getTime().getTime() > cal2.getTime().getTime()) {
       return 1;
      } else if (cal1.getTime().getTime() < cal2.getTime().getTime()) {
       return -1;
      } else {
       return 0;
      }
     }
     
     /**
      * 判断当前日期与传入日期之间相差的天数(只比较yyyy-MM-dd形式,忽略时分秒)
      * <p>
      * 当前日期(如2015-10-06),传入日期(如2015-10-01),则返回-5
      * </p>
      *
      * @return
      */
     public static int downDate(Date dt1) {
     
            // 超出日数计算
            int day = 0;
            try {
                String shdStr = FORMAT3.format(dt1);
                String today = FORMAT3.format(DateUtil.getCurrentTime());
           
                Calendar cal = Calendar.getInstance();
                cal.setTime(FORMAT3.parse(shdStr));
                long shdTime = cal.getTimeInMillis();
                cal.setTime(FORMAT3.parse(today));
                long todayTime = cal.getTimeInMillis();
                day = Integer.valueOf(String.valueOf((todayTime - shdTime)/(24*3600*1000)));
            } catch (Exception e) {
                e.printStackTrace();
            }
           
            return day;
     }
     
     /**
      * 比较两个日期的相差月份数
      * @param start 开始时间  形如 2015/10/10
      * @param end 结束时间    形如 2016/1/1
      * @return
      */
     public  static  int getMonth(Date start, Date end) {
            if (start.after(end)) {
                Date t = start;
                start = end;
                end = t;
            }
            Calendar startCalendar = Calendar.getInstance();
            startCalendar.setTime(start);
            Calendar endCalendar = Calendar.getInstance();
            endCalendar.setTime(end);
            Calendar temp = Calendar.getInstance();
            temp.setTime(end);
            temp.add(Calendar.DATE, 1);
     
            int year = endCalendar.get(Calendar.YEAR)
                    - startCalendar.get(Calendar.YEAR);
            int month = endCalendar.get(Calendar.MONTH)
                    - startCalendar.get(Calendar.MONTH);
     
            if ((startCalendar.get(Calendar.DATE) == 1)
                    && (temp.get(Calendar.DATE) == 1)) {
                return year * 12 + month + 1;
            } else if ((startCalendar.get(Calendar.DATE) != 1)
                    && (temp.get(Calendar.DATE) == 1)) {
                return year * 12 + month;
            } else if ((startCalendar.get(Calendar.DATE) == 1)
                    && (temp.get(Calendar.DATE) != 1)) {
                return year * 12 + month;
            } else {
                return (year * 12 + month - 1) < 0 ? 0 : (year * 12 + month);
            }
        }
     
    }
  • 相关阅读:
    Evanyou Blog 彩带
    Evanyou Blog 彩带
    Evanyou Blog 彩带
    Evanyou Blog 彩带
    Evanyou Blog 彩带
    Evanyou Blog 彩带
    Evanyou Blog 彩带
    Evanyou Blog 彩带
    数论12——浅谈指数与对数
    数论11——大组合数
  • 原文地址:https://www.cnblogs.com/mark8080/p/6098174.html
Copyright © 2011-2022 走看看