jinpengyong
2022-03-22 8e1a1a16cbabe0416861581458762d188e8d0b35
screen-common/src/main/java/com/moral/util/DateUtils.java
@@ -80,6 +80,10 @@
     * 日期格式(yyyy-MM-dd HH)
     * */
    public static final String yyyy_MM_dd_HH_EN = "yyyy-MM-dd HH";
    /*
     * 日期格式(MM-dd)
     * */
    public static final String MM_dd_EN = "MM-dd";
    /*
     * Date类toString格式
@@ -651,6 +655,8 @@
        return new Date();
    }
    public static String getAfterNDays(Date date, int n, String formateStr) {
        SimpleDateFormat sdf = new SimpleDateFormat(formateStr);
        Calendar calendar = new GregorianCalendar();
@@ -956,9 +962,9 @@
        cal.setTime(date);
        final int last = cal.getActualMinimum(Calendar.DAY_OF_YEAR);
        cal.set(Calendar.DAY_OF_YEAR, last);
        cal.set(Calendar.HOUR_OF_DAY,0);
        cal.set(Calendar.MINUTE,0);
        cal.set(Calendar.SECOND,0);
        cal.set(Calendar.HOUR_OF_DAY, 0);
        cal.set(Calendar.MINUTE, 0);
        cal.set(Calendar.SECOND, 0);
        return cal.getTime();
    }
@@ -977,6 +983,35 @@
    }
    /*
     * 获取指定日期月的第一天
     * */
    public static Date getFirstDayOfMonth(Date date) {
        final Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        final int last = cal.getActualMinimum(Calendar.DAY_OF_MONTH);
        cal.set(Calendar.DAY_OF_MONTH, last);
        cal.set(Calendar.HOUR_OF_DAY, 0);
        cal.set(Calendar.MINUTE, 0);
        cal.set(Calendar.SECOND, 0);
        return cal.getTime();
    }
    /*
     * 获取指定日期月的最后一天
     * */
    public static Date getLastDayOfMonth(Date date) {
        final Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        final int last = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
        cal.set(Calendar.DAY_OF_MONTH, last);
        cal.set(Calendar.HOUR_OF_DAY, 23);
        cal.set(Calendar.MINUTE, 59);
        cal.set(Calendar.SECOND, 59);
        return cal.getTime();
    }
    /*
     * 判断日期是否为今年
     * */
    public static boolean isCurrentYear(Date date) {
@@ -987,6 +1022,19 @@
        int year = cal.get(Calendar.YEAR);
        return year == currentYear;
    }
    /*
     * 判断日期是否为本月
     * */
    public static boolean isCurrentMonth(Date date) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(new Date());
        int currentYear = cal.get(Calendar.MONTH);
        cal.setTime(date);
        int year = cal.get(Calendar.MONTH);
        return year == currentYear;
    }
    /**
     * 获取当前月的最后一天
@@ -1018,50 +1066,6 @@
            throw new RuntimeException(e);
        }
        return date;
    }
    /**
     * 获取指定年月的第一天
     *
     * @param year
     * @param month
     * @return
     */
    public static String getFirstDayOfMonth(int year, int month) {
        Calendar cal = Calendar.getInstance();
        // 设置年份
        cal.set(Calendar.YEAR, year);
        // 设置月份
        cal.set(Calendar.MONTH, month - 1);
        // 获取某月最小天数
        int lastDay = cal.getActualMinimum(Calendar.DAY_OF_MONTH);
        // 设置日历中月份的最大天数
        cal.set(Calendar.DAY_OF_MONTH, lastDay);
        // 格式化日期
        DateFormat df = getDateFormat(yyyy_MM_dd_EN);
        return df.format(cal.getTime());
    }
    /**
     * 获取指定年月的第一天
     *
     * @param year
     * @param month
     * @return
     */
    public static String getLastDayOfMonth(int year, int month) {
        Calendar cal = Calendar.getInstance();
        // 设置年份
        cal.set(Calendar.YEAR, year);
        // 设置月份
        cal.set(Calendar.MONTH, month - 1);
        // 获取某月最大天数
        int lastDay = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
        // 设置日历中月份的最大天数
        cal.set(Calendar.DAY_OF_MONTH, lastDay);
        // 格式化日期
        DateFormat df = getDateFormat(yyyy_MM_dd_EN);
        return df.format(cal.getTime());
    }
    /**
@@ -1446,6 +1450,14 @@
        return calendar.getTime();
    }
    //加减年份
    public static Date addYears(Date date, int years) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.YEAR, years);
        return calendar.getTime();
    }
    /**
     * <p>
     * Title: getDays
@@ -1811,4 +1823,22 @@
        String lastYear = getDateAddYear(DateUtils.dateToDateString(getDate(), DateUtils.yyyy), -1);
        return DateUtils.getDate(lastYear, DateUtils.yyyy);
    }
    //获取一天中每个小时的前后一小时集合
    public static Map<Date, List<Integer>> getBeforeAndAfterHourDate(Date date) {
        String s = dateToDateString(date, yyyy_MM_dd_EN);
        List<String> timeLag = getTimeLag(s);
        Map<Date, List<Integer>> result = new HashMap<>();
        for (String s1 : timeLag) {
            List<Integer> objects = new ArrayList<>();
            Date current = getDate(s1, yyyy_MM_dd_HH_EN);
            Date before = addHours(current, -1);
            Date after = addHours(current, 1);
            objects.add(getHour(before));
            objects.add(getHour(current));
            objects.add(getHour(after));
            result.put(current, objects);
        }
        return result;
    }
}