日期工具类

public class DateUtil {    // ==格局到年==    /**     * 日期格局,年份,例如:2004,2008     */    public static final String DATE_FORMAT_YYYY = "yyyy";    // ==格局到年月 ==    /**     * 日期格局,年份和月份,例如:200707,200808     */    public static final String DATE_FORMAT_YYYYMM = "yyyyMM";    /**     * 日期格局,年份和月份,例如:200707,2008-08     */    public static final String DATE_FORMAT_YYYY_MM = "yyyy-MM";    // ==格局到年月日==    /**     * 日期格局,年月日,例如:050630,080808     */    public static final String DATE_FORMAT_YYMMDD = "yyMMdd";    /**     * 日期格局,年月日,用横杠离开,例如:06-12-25,08-08-08     */    public static final String DATE_FORMAT_YY_MM_DD = "yy-MM-dd";    /**     * 日期格局,年月日,例如:20050630,20080808     */    public static final String DATE_FORMAT_YYYYMMDD = "yyyyMMdd";    /**     * 日期格局,年月日,用横杠离开,例如:2006-12-25,2008-08-08     */    public static final String DATE_FORMAT_YYYY_MM_DD = "yyyy-MM-dd";    /**     * 日期格局,年月日,用横杠离开,例如:2020/07/16     */    public static final String DATE_FORMAT_YYYY_MM_DD_2 = "yyyy/MM/dd";    /**     * 日期格局,年月日,例如:2016.10.05     */    public static final String DATE_FORMAT_POINTYYYYMMDD = "yyyy.MM.dd";    /**     * 日期格局,年月日,例如:2016年10月05日     */    public static final String DATE_TIME_FORMAT_YYYY年MM月DD日 = "yyyy年MM月dd日";    // ==格局到年月日 时候 ==    /**     * 日期格局,年月日时分,例如:200506301210,200808081210     */    public static final String DATE_FORMAT_YYYYMMDDHHmm = "yyyyMMddHHmm";    /**     * 日期格局,年月日时分,例如:20001230 12:00,20080808 20:08     */    public static final String DATE_TIME_FORMAT_YYYYMMDD_HH_MI = "yyyyMMdd HH:mm";    /**     * 日期格局,年月日时分,例如:2000-12-30 12:00,2008-08-08 20:08     */    public static final String DATE_TIME_FORMAT_YYYY_MM_DD_HH_MI = "yyyy-MM-dd HH:mm";    /**     * 日期格局,年月日时分,例如:2020/07/16 15:12     */    public static final String DATE_TIME_FORMAT_YYYY_MM_DD_HH_MI_2 = "yyyy/MM/dd HH:mm";    // ==格局到年月日 时分秒==    /**     * 日期格局,年月日时分秒,例如:20001230120000,20080808200808     */    public static final String DATE_TIME_FORMAT_YYYYMMDDHHMISS = "yyyyMMddHHmmss";    /**     * 日期格局,年月日时分秒,年月日用横杠离开,时分秒用冒号离开     * 例如:2005-05-10 23:20:00,2008-08-08 20:08:08     */    public static final String DATE_TIME_FORMAT_YYYY_MM_DD_HH_MI_SS = "yyyy-MM-dd HH:mm:ss";    public static final String DATE_TIME_FORMAT_YYYY_MM_DD_HH_MI_SS_2 = "yyyy/MM/dd HH:mm:ss";    // ==格局到年月日 时分秒 毫秒==    /**     * 日期格局,年月日时分秒毫秒,例如:20001230120000123,20080808200808456     */    public static final String DATE_TIME_FORMAT_YYYYMMDDHHMISSSSS = "yyyyMMddHHmmssSSS";    // ==非凡格局==    /**     * 日期格局,月日时候,例如:10-05 12:00     */    public static final String DATE_FORMAT_MMDDHHMI = "MM-dd HH:mm";    /* ************工具办法***************   */    /**     * 获取某日期的年份     * @param date     * @return     */    public static Integer getYear(Date date) {        Calendar cal = Calendar.getInstance();        cal.setTime(date);        return cal.get(Calendar.YEAR);    }    /**     * 获取某日期的月份     * @param date     * @return     */    public static Integer getMonth(Date date) {        Calendar cal = Calendar.getInstance();        cal.setTime(date);        return cal.get(Calendar.MONTH) + 1;    }    /**     * 获取某日期的日数     * @param date     * @return     */    public static Integer getDay(Date date){        Calendar cal = Calendar.getInstance();        cal.setTime(date);        int day=cal.get(Calendar.DATE);//获取日        return day;    }    /**     * 获取以后日期是星期几     * @param date     * @return 以后日期是星期几     */    public static String getWeekOfDate(Date date) {        String[] weekDays = { "周日", "周一", "周二", "周三", "周四", "周五", "周六" };        Calendar cal = Calendar.getInstance();        cal.setTime(date);        int w = cal.get(Calendar.DAY_OF_WEEK) - 1;        if (w < 0)            w = 0;        return weekDays[w];    }    /**     * 格式化Date工夫     * @param time Date类型工夫     * @param timeFromat String类型格局     * @return 格式化后的字符串     */    public static String parseDateToStr(Date time, String timeFromat){        DateFormat dateFormat=new SimpleDateFormat(timeFromat);        return dateFormat.format(time);    }    /**     * 格式化Timestamp工夫     * @param timestamp Timestamp类型工夫     * @param timeFromat     * @return 格式化后的字符串     */    public static String parseTimestampToStr(Timestamp timestamp,String timeFromat){        SimpleDateFormat df = new SimpleDateFormat(timeFromat);        return df.format(timestamp);    }    /**     * 格式化Date工夫     * @param time Date类型工夫     * @param timeFromat String类型格局     * @param defaultValue 默认值为以后工夫Date     * @return 格式化后的字符串     */    public static String parseDateToStr(Date time, String timeFromat, final Date defaultValue){        try{            DateFormat dateFormat=new SimpleDateFormat(timeFromat);            return dateFormat.format(time);        }catch (Exception e){            if(defaultValue!=null)                return parseDateToStr(defaultValue, timeFromat);            else                return parseDateToStr(new Date(), timeFromat);        }    }    /**     * 格式化Date工夫     * @param time Date类型工夫     * @param timeFromat String类型格局     * @param defaultValue 默认工夫值String类型     * @return 格式化后的字符串     */    public static String parseDateToStr(Date time, String timeFromat, final String defaultValue){        try{            DateFormat dateFormat=new SimpleDateFormat(timeFromat);            return dateFormat.format(time);        }catch (Exception e){            return defaultValue;        }    }    /**     * 格式化String工夫     * @param time String类型工夫     * @param timeFromat String类型格局     * @return 格式化后的Date日期     */    public static Date parseStrToDate(String time, String timeFromat) {        if (time == null || time.equals("")) {            return null;        }        Date date=null;        try{            DateFormat dateFormat=new SimpleDateFormat(timeFromat);            date=dateFormat.parse(time);        }catch(Exception e){        }        return date;    }    /**     * 格式化String工夫     * @param strTime String类型工夫     * @param timeFromat String类型格局     * @param defaultValue 异样时返回的默认值     * @return     */    public static Date parseStrToDate(String strTime, String timeFromat,                                      Date defaultValue) {        try {            DateFormat dateFormat = new SimpleDateFormat(timeFromat);            return dateFormat.parse(strTime);        } catch (Exception e) {            return defaultValue;        }    }    /**     * 当strTime为2008-9时返回为2008-9-1 00:00格局日期工夫,无奈转换返回null.     * @param strTime     * @return     */    public static Date strToDate(String strTime) {        if(strTime==null || strTime.trim().length()<=0)            return null;        Date date = null;        List<String> list = new ArrayList<String>(0);        list.add(DATE_TIME_FORMAT_YYYY_MM_DD_HH_MI_SS);        list.add(DATE_TIME_FORMAT_YYYY_MM_DD_HH_MI_SS_2);        list.add(DATE_TIME_FORMAT_YYYYMMDDHHMISSSSS);        list.add(DATE_TIME_FORMAT_YYYY_MM_DD_HH_MI);        list.add(DATE_TIME_FORMAT_YYYY_MM_DD_HH_MI_2);        list.add(DATE_TIME_FORMAT_YYYYMMDD_HH_MI);        list.add(DATE_TIME_FORMAT_YYYYMMDDHHMISS);        list.add(DATE_FORMAT_YYYY_MM_DD);        list.add(DATE_FORMAT_YYYY_MM_DD_2);        list.add(DATE_FORMAT_YYYYMMDD);        list.add(DATE_FORMAT_YYYY_MM);        list.add(DATE_FORMAT_YYYYMM);        list.add(DATE_FORMAT_YYYY);        for (Iterator iter = list.iterator(); iter.hasNext();) {            String format = (String) iter.next();            if(strTime.indexOf("-")>0 && format.indexOf("-")<0)                continue;            if(strTime.indexOf("-")<0 && format.indexOf("-")>0)                continue;            if(strTime.length()>format.length())                continue;            date = parseStrToDate(strTime, format);            if (date != null)                break;        }        return date;    }    /**     * 解析两个日期之间的所有月份     * @param beginDateStr 开始日期,至多准确到yyyy-MM     * @param endDateStr 完结日期,至多准确到yyyy-MM     * @return yyyy-MM日期汇合     */    public static List<String> getMonthListOfDate(String beginDateStr, String endDateStr) {        // 指定要解析的工夫格局        SimpleDateFormat f = new SimpleDateFormat("yyyy-MM");        // 返回的月份列表        String sRet = "";        // 定义一些变量        Date beginDate = null;        Date endDate = null;        GregorianCalendar beginGC = null;        GregorianCalendar endGC = null;        List<String> list = new ArrayList<String>();        try {            // 将字符串parse成日期            beginDate = f.parse(beginDateStr);            endDate = f.parse(endDateStr);            // 设置日历            beginGC = new GregorianCalendar();            beginGC.setTime(beginDate);            endGC = new GregorianCalendar();            endGC.setTime(endDate);            // 直到两个工夫雷同            while (beginGC.getTime().compareTo(endGC.getTime()) <= 0) {                sRet = beginGC.get(Calendar.YEAR) + "-"                        + (beginGC.get(Calendar.MONTH) + 1);                list.add(sRet);                // 以月为单位,减少工夫                beginGC.add(Calendar.MONTH, 1);            }            return list;        } catch (Exception e) {            e.printStackTrace();            return null;        }    }    /**     * 解析两个日期段之间的所有日期     * @param beginDateStr 开始日期  ,至多准确到yyyy-MM-dd     * @param endDateStr 完结日期  ,至多准确到yyyy-MM-dd     * @return yyyy-MM-dd日期汇合     */    public static List<String> getDayListOfDate(String beginDateStr, String endDateStr) {        // 指定要解析的工夫格局        SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd");        // 定义一些变量        Date beginDate = null;        Date endDate = null;        Calendar beginGC = null;        Calendar endGC = null;        List<String> list = new ArrayList<String>();        try {            // 将字符串parse成日期            beginDate = f.parse(beginDateStr);            endDate = f.parse(endDateStr);            // 设置日历            beginGC = Calendar.getInstance();            beginGC.setTime(beginDate);            endGC = Calendar.getInstance();            endGC.setTime(endDate);            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");            // 直到两个工夫雷同            while (beginGC.getTime().compareTo(endGC.getTime()) <= 0) {                list.add(sdf.format(beginGC.getTime()));                // 以日为单位,减少工夫                beginGC.add(Calendar.DAY_OF_MONTH, 1);            }            return list;        } catch (Exception e) {            e.printStackTrace();            return null;        }    }    /**     * 获取当下年份指定前后数量的年份汇合     * @param before 当下年份前年数     * @param behind 当下年份后年数     * @return 汇合     */    public static List<Integer> getYearListOfYears(int before,int behind) {        if (before<0 || behind<0) {            return null;        }        List<Integer> list = new ArrayList<Integer>();        Calendar c = null;        c = Calendar.getInstance();        c.setTime(new Date());        int currYear = Calendar.getInstance().get(Calendar.YEAR);        int startYear = currYear - before;        int endYear = currYear + behind;        for (int i = startYear; i < endYear; i++) {            list.add(Integer.valueOf(i));        }        return list;    }    /**     * 获取以后日期是一年中第几周     * @param date     * @return     */    public static Integer getWeekthOfYear(Date date) {        Calendar c = new GregorianCalendar();        c.setFirstDayOfWeek(Calendar.MONDAY);        c.setMinimalDaysInFirstWeek(7);        c.setTime(date);        return c.get(Calendar.WEEK_OF_YEAR);    }    /**     * 获取某一年各星期的始终工夫     * 实例:getWeekList(2016),第52周(从2016-12-26至2017-01-01)     * @param year 年份     * @return     */    public static HashMap<Integer,String> getWeekTimeOfYear(int year) {        HashMap<Integer,String> map = new LinkedHashMap<Integer,String>();        Calendar c = new GregorianCalendar();        c.set(year, Calendar.DECEMBER, 31, 23, 59, 59);        int count = getWeekthOfYear(c.getTime());        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");        String dayOfWeekStart = "";        String dayOfWeekEnd = "";        for (int i = 1; i <= count; i++) {            dayOfWeekStart = sdf.format(getFirstDayOfWeek(year, i));            dayOfWeekEnd = sdf.format(getLastDayOfWeek(year, i));            map.put(Integer.valueOf(i), "第"+i+"周(从"+dayOfWeekStart + "至" + dayOfWeekEnd+")");        }        return map;    }    /**     * 获取某一年的总周数     * @param year     * @return     */    public static Integer getWeekCountOfYear(int year){        Calendar c = new GregorianCalendar();        c.set(year, Calendar.DECEMBER, 31, 23, 59, 59);        int count = getWeekthOfYear(c.getTime());        return count;    }    /**     * 获取指定日期所在周的第一天     * @param date     * @return     */    public static Date getFirstDayOfWeek(Date date) {        Calendar c = new GregorianCalendar();        c.setFirstDayOfWeek(Calendar.MONDAY);        c.setTime(date);        c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek()); // Monday        return c.getTime();    }    /**     * 获取指定日期所在周的最初一天     * @param date     * @return     */    public static Date getLastDayOfWeek(Date date) {        Calendar c = new GregorianCalendar();        c.setFirstDayOfWeek(Calendar.MONDAY);        c.setTime(date);        c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek() + 6); // Sunday        return c.getTime();    }    /**     * 获取某年某周的第一天     * @param year 指标年份     * @param week 指标周数     * @return     */    public static Date getFirstDayOfWeek(int year, int week) {        Calendar c = new GregorianCalendar();        c.set(Calendar.YEAR, year);        c.set(Calendar.MONTH, Calendar.JANUARY);        c.set(Calendar.DATE, 1);        Calendar cal = (GregorianCalendar) c.clone();        cal.add(Calendar.DATE, week * 7);        return getFirstDayOfWeek(cal.getTime());    }    /**     * 获取某年某周的最初一天     * @param year 指标年份     * @param week 指标周数     * @return     */    public static Date getLastDayOfWeek(int year, int week) {        Calendar c = new GregorianCalendar();        c.set(Calendar.YEAR, year);        c.set(Calendar.MONTH, Calendar.JANUARY);        c.set(Calendar.DATE, 1);        Calendar cal = (GregorianCalendar) c.clone();        cal.add(Calendar.DATE, week * 7);        return getLastDayOfWeek(cal.getTime());    }    /**     * 获取某年某月的第一天     * @param year 指标年份     * @param month 指标月份     * @return     */    public static Date getFirstDayOfMonth(int year,int month){        month = month-1;        Calendar   c   =   Calendar.getInstance();        c.set(Calendar.YEAR, year);        c.set(Calendar.MONTH, month);        int day = c.getActualMinimum(c.DAY_OF_MONTH);        c.set(Calendar.DAY_OF_MONTH, day);        c.set(Calendar.HOUR_OF_DAY, 0);        c.set(Calendar.MINUTE, 0);        c.set(Calendar.SECOND, 0);        c.set(Calendar.MILLISECOND, 0);        return c.getTime();    }    /**     * 获取某年某月的最初一天     * @param year 指标年份     * @param month 指标月份     * @return     */    public static Date getLastDayOfMonth(int year,int month){        month = month-1;        Calendar   c   =   Calendar.getInstance();        c.set(Calendar.YEAR, year);        c.set(Calendar.MONTH, month);        int day = c.getActualMaximum(c.DAY_OF_MONTH);        c.set(Calendar.DAY_OF_MONTH, day);        c.set(Calendar.HOUR_OF_DAY, 23);        c.set(Calendar.MINUTE, 59);        c.set(Calendar.SECOND, 59);        c.set(Calendar.MILLISECOND, 999);        return c.getTime();    }    /**     * 获取某个日期为星期几     * @param date     * @return String "星期*"     */    public static String getDayWeekOfDate1(Date date) {        String[] weekDays = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};        Calendar cal = Calendar.getInstance();        cal.setTime(date);        int w = cal.get(Calendar.DAY_OF_WEEK) - 1;        if (w < 0)            w = 0;        return weekDays[w];    }    /**     * 取得指定日期的星期几数     * @param date     * @return int     */    public static Integer getDayWeekOfDate2(Date date){        Calendar aCalendar = Calendar.getInstance();        aCalendar.setTime(date);        int weekDay = aCalendar.get(Calendar.DAY_OF_WEEK);        return weekDay;    }    /**     * 验证字符串是否为日期     * 验证格局:YYYYMMDD、YYYY_MM_DD、YYYYMMDDHHMISS、YYYYMMDD_HH_MI、YYYY_MM_DD_HH_MI、YYYYMMDDHHMISSSSS、YYYY_MM_DD_HH_MI_SS     * @param strTime     * @return null时返回false;true为日期,false不为日期     */    public static boolean validateIsDate(String strTime) {        if (strTime == null || strTime.trim().length() <= 0)            return false;        Date date = null;        List<String> list = new ArrayList<String>(0);        list.add(DATE_TIME_FORMAT_YYYY_MM_DD_HH_MI_SS);        list.add(DATE_TIME_FORMAT_YYYYMMDDHHMISSSSS);        list.add(DATE_TIME_FORMAT_YYYY_MM_DD_HH_MI);        list.add(DATE_TIME_FORMAT_YYYYMMDD_HH_MI);        list.add(DATE_TIME_FORMAT_YYYYMMDDHHMISS);        list.add(DATE_FORMAT_YYYY_MM_DD);        //list.add(DATE_FORMAT_YY_MM_DD);        list.add(DATE_FORMAT_YYYYMMDD);        //list.add(DATE_FORMAT_YYYY_MM);        //list.add(DATE_FORMAT_YYYYMM);        //list.add(DATE_FORMAT_YYYY);        for (Iterator iter = list.iterator(); iter.hasNext();) {            String format = (String) iter.next();            if(strTime.indexOf("-")>0 && format.indexOf("-")<0)                continue;            if(strTime.indexOf("-")<0 && format.indexOf("-")>0)                continue;            if(strTime.length()>format.length())                continue;            date = parseStrToDate(strTime.trim(), format);            if (date != null)                break;        }        if (date != null) {            System.out.println("生成的日期:"+DateUtil.parseDateToStr(date, DateUtil.DATE_TIME_FORMAT_YYYY_MM_DD_HH_MI_SS, "--null--"));            return true;        }        return false;    }    /**     * 将指定日期的时分秒格局为零     * @param date     * @return     */    public static Date formatHhMmSsOfDate(Date date) {        Calendar cal = Calendar.getInstance();        cal.setTime(date);        cal.set(Calendar.HOUR_OF_DAY, 0);        cal.set(Calendar.MINUTE, 0);        cal.set(Calendar.SECOND, 0);        cal.set(Calendar.MILLISECOND, 0);        return cal.getTime();    }    /**     * 取得指定工夫加减参数后的日期(不计算则输出0)     * @param date 指定日期     * @param year 年数,可正可负     * @param month 月数,可正可负     * @param day 天数,可正可负     * @param hour 小时数,可正可负     * @param minute 分钟数,可正可负     * @param second 秒数,可正可负     * @param millisecond 毫秒数,可正可负     * @return 计算后的日期     */    public static Date addDate(Date date,int year,int month,int day,int hour,int minute,int second,int millisecond){        Calendar c = Calendar.getInstance();        c.setTime(date);        c.add(Calendar.YEAR, year);//加减年数        c.add(Calendar.MONTH, month);//加减月数        c.add(Calendar.DATE, day);//加减天数        c.add(Calendar.HOUR,hour);//加减小时数        c.add(Calendar.MINUTE, minute);//加减分钟数        c.add(Calendar.SECOND, second);//加减秒        c.add(Calendar.MILLISECOND, millisecond);//加减毫秒数        return c.getTime();    }    /**     * 取得两个日期的工夫戳之差     * @param startDate     * @param endDate     * @return     */    public static Long getDistanceTimestamp(Date startDate,Date endDate){        long daysBetween=(endDate.getTime()-startDate.getTime()+1000000)/(3600*24*1000);        return daysBetween;    }    /**     * 判断二个工夫是否为同年同月     * @param date1     * @param date2     * @return     */    public static Boolean compareIsSameMonth(Date date1,Date date2){        boolean flag = false;        int year1  = getYear(date1);        int year2 = getYear(date2);        if(year1 == year2){            int month1 = getMonth(date1);            int month2 = getMonth(date2);            if(month1 == month2)flag = true;        }        return flag;    }    /**     * 取得两个工夫相差间隔多少天多少小时多少分多少秒     * @param one 工夫参数 1 格局:1990-01-01 12:00:00     * @param two 工夫参数 2 格局:2009-01-01 12:00:00     * @return long[] 返回值为:{天, 时, 分, 秒}     */    public static long[] getDistanceTime(Date one, Date two) {        long day = 0;        long hour = 0;        long min = 0;        long sec = 0;        try {            long time1 = one.getTime();            long time2 = two.getTime();            long diff ;            if(time1<time2) {                diff = time2 - time1;            } else {                diff = time1 - time2;            }            day = diff / (24 * 60 * 60 * 1000);            hour = (diff / (60 * 60 * 1000) - day * 24);            min = ((diff / (60 * 1000)) - day * 24 * 60 - hour * 60);            sec = (diff/1000-day*24*60*60-hour*60*60-min*60);        } catch (Exception e) {            e.printStackTrace();        }        long[] times = {day, hour, min, sec};        return times;    }    /**     * 两个工夫相差间隔多少天多少小时多少分多少秒     * @param str1 工夫参数 1 格局:1990-01-01 12:00:00     * @param str2 工夫参数 2 格局:2009-01-01 12:00:00     * @return String 返回值为:{天, 时, 分, 秒}     */    public static long[] getDistanceTime(String str1, String str2) {        DateFormat df = new SimpleDateFormat(DATE_TIME_FORMAT_YYYY_MM_DD_HH_MI_SS);        Date one;        Date two;        long day = 0;        long hour = 0;        long min = 0;        long sec = 0;        try {            one = df.parse(str1);            two = df.parse(str2);            long time1 = one.getTime();            long time2 = two.getTime();            long diff ;            if(time1<time2) {                diff = time2 - time1;            } else {                diff = time1 - time2;            }            day = diff / (24 * 60 * 60 * 1000);            hour = (diff / (60 * 60 * 1000) - day * 24);            min = ((diff / (60 * 1000)) - day * 24 * 60 - hour * 60);            sec = (diff/1000-day*24*60*60-hour*60*60-min*60);        } catch (ParseException e) {            e.printStackTrace();        }        long[] times = {day, hour, min, sec};        return times;    }    /**     * 两个工夫之间相差间隔多少天     * @param str1 工夫参数 1:     * @param str2 工夫参数 2:     * @return 相差天数     */    public static Long getDistanceDays(String str1, String str2) throws Exception{        DateFormat df = new SimpleDateFormat(DATE_TIME_FORMAT_YYYY_MM_DD_HH_MI_SS);        Date one;        Date two;        long days=0;        try {            one = df.parse(str1);            two = df.parse(str2);            long time1 = one.getTime();            long time2 = two.getTime();            long diff ;            if(time1<time2) {                diff = time2 - time1;            } else {                diff = time1 - time2;            }            days = diff / (1000 * 60 * 60 * 24);        } catch (ParseException e) {            e.printStackTrace();        }        return days;    }    /**     * 获取指定工夫的那天 00:00:00.000 的工夫     * @param date     * @return     */    public static Date getDayBeginTime(final Date date) {        Calendar c = Calendar.getInstance();        c.setTime(date);        c.set(Calendar.HOUR_OF_DAY, 0);        c.set(Calendar.MINUTE, 0);        c.set(Calendar.SECOND, 0);        c.set(Calendar.MILLISECOND, 0);        return c.getTime();    }    /**     * 获取指定工夫的那天 23:59:59.999 的工夫     * @param date     * @return     */    public static Date getDayEndTime(final Date date) {        Calendar c = Calendar.getInstance();        c.setTime(date);        c.set(Calendar.HOUR_OF_DAY, 23);        c.set(Calendar.MINUTE, 59);        c.set(Calendar.SECOND, 59);        c.set(Calendar.MILLISECOND, 999);        return c.getTime();    }    /**     * 零碎以后的工夫戳     *     * @return 零碎以后的工夫戳     */    public static Timestamp getTimestamp() {        return new Timestamp(System.currentTimeMillis());    }    public static void main(String [] args){        try {            DateUtil dateUtil = new DateUtil();            System.out.println();            Calendar rightNow = Calendar.getInstance();            int hour = rightNow.get(Calendar.HOUR_OF_DAY);//时            int minute = rightNow.get(Calendar.MINUTE);//分            System.out.println(hour+":"+minute);            PasswordEncodeDecode p=new PasswordEncodeDecode();            String pass = p.passwordEncode("83abe08f8b1040b2a75b6faf29384cfd","#XJYTghsjzx2021");//数据库明码加密            System.out.println("ds----》 " + pass);        } catch (Exception e) {            // TODO: handle exception        }    }    //获取以后工夫戳 格局为 yyyyMMddHHmmss    public static String getNowDate() {        //失去long类型以后工夫        long  l = System.currentTimeMillis();        //new日期对象        Date date =  new  Date(l);        //转换提日期输入格局        SimpleDateFormat dateFormat =  new SimpleDateFormat( "yyyyMMddHHmmss" );        return dateFormat.format(date);    }}

响应工具类(接口返回数据格式)

@Data@ApiModel(value="接口返回对象", description="接口返回对象")public class Result<T> implements Serializable {    private static final long serialVersionUID = 1L;    /**     * 胜利标记     */    @ApiModelProperty(value = "胜利标记")    private boolean success = true;    /**     * 返回解决音讯     */    @ApiModelProperty(value = "返回解决音讯")    private String message = "操作胜利!";    /**     * 返回代码     */    @ApiModelProperty(value = "返回代码")    private Integer code = 0;        /**     * 返回数据对象 data     */    @ApiModelProperty(value = "返回数据对象")    private T result;        /**     * 工夫戳     */    @ApiModelProperty(value = "工夫戳")    private long timestamp = System.currentTimeMillis();    public Result() {            }        public Result<T> success(String message) {        this.message = message;        this.code = CommonConstant.SC_OK_200;        this.success = true;        return this;    }            public static Result<Object> ok() {        Result<Object> r = new Result<Object>();        r.setSuccess(true);        r.setCode(CommonConstant.SC_OK_200);        r.setMessage("胜利");        return r;    }        public static Result<Object> ok(String msg) {        Result<Object> r = new Result<Object>();        r.setSuccess(true);        r.setCode(CommonConstant.SC_OK_200);        r.setMessage(msg);        return r;    }        public static Result<Object> ok(Object data) {        Result<Object> r = new Result<Object>();        r.setSuccess(true);        r.setCode(CommonConstant.SC_OK_200);        r.setResult(data);        return r;    }    public static Result<Object> ok(Object data, String msg) {        Result<Object> r = new Result<Object>();        r.setSuccess(true);        r.setCode(CommonConstant.SC_OK_200);        r.setMessage(msg);        r.setResult(data);        return r;    }    public static Result<Object> error(String msg) {        return error(CommonConstant.SC_INTERNAL_SERVER_ERROR_500, msg);    }        public static Result<Object> error(int code, String msg) {        Result<Object> r = new Result<Object>();        r.setCode(code);        r.setMessage(msg);        r.setSuccess(false);        return r;    }    public Result<T> error500(String message) {        this.message = message;        this.code = CommonConstant.SC_INTERNAL_SERVER_ERROR_500;        this.success = false;        return this;    }    /**     * 无权限拜访返回后果     */    public static Result<Object> noauth(String msg) {        return error(CommonConstant.SC_NO_AUTHZ, msg);    }}