yanghui
2022-11-28 42521c9b51c1bd9a40036f18fd610cd46601222d
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/DateUtils.java
@@ -4,11 +4,10 @@
import java.text.SimpleDateFormat;
import java.time.*;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.*;
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@@ -53,7 +52,7 @@
    /**
     * 字符串转date
     *
     *
     * @param date
     *            时间戳
     * @param format
@@ -74,7 +73,7 @@
    /**
     * 字符串转date
     *
     *
     * @param date
     *            时间戳
     * @return 时间
@@ -100,7 +99,7 @@
    /**
     * 字符串转date
     *
     *
     * @param date
     *            时间戳
     * @return 时间
@@ -119,7 +118,7 @@
    /**
     * 获取当前时间
     *
     *
     * @return
     * @throws Exception
     */
@@ -130,7 +129,7 @@
    /**
     * 返回当前事件的时间戳
     *
     *
     * @return
     */
    public static Long getCurrentDateTimeStamp() {
@@ -139,7 +138,7 @@
    /**
     * 获取当前时间字符串,格式为yyyy-MM-dd HH:mm:ss
     *
     *
     * @return
     */
    public static String getCurrentDateStr() {
@@ -159,7 +158,7 @@
    /**
     * 获取当前时间字符串,格式为yyyyMMdd
     *
     *
     * @return
     */
    public static String getCurrentDateString() {
@@ -169,7 +168,7 @@
    /**
     * 获取当前时间字符串,格式为yyyy-MM-dd
     *
     *
     * @return
     */
    public static String getCurrentDateStrymd() {
@@ -184,7 +183,7 @@
    /**
     * 获取当前时间long值
     *
     *
     * @return
     */
    public static long getCurrentDataLong() {
@@ -193,7 +192,7 @@
    /**
     * 获取当前时间
     *
     *
     * @param format
     * @return
     * @throws Exception
@@ -298,7 +297,7 @@
    /**
     * 对日期进行加法操作
     *
     *
     * @param date
     * @param hours
     * @return
@@ -315,7 +314,7 @@
    /**
     * 对日期的分钟进行加法操作
     *
     *
     * @param date
     * @param minutes
     * @return
@@ -390,7 +389,7 @@
    /**
     * 计算两个日期先差多少秒
     *
     *
     * @param pre
     *            前一个日期
     * @param after
@@ -403,7 +402,7 @@
    /**
     * 计算两个时间相差的天数
     *
     *
     * @param stardate
     * @param enddate
     * @return
@@ -416,16 +415,16 @@
        long day = diff / nd;
        long hour = diff % nd / nh;
        long hour = diff / nh;
        long min = diff % nd % nh / nm;
        long min = diff / nm;
        return (int)day;
        return (int)hour;
    }
    /**
     * 结束时间与当前时间计算相差的月数
     *
     *
     * @param enddate
     * @return
     */
@@ -444,7 +443,7 @@
    /**
     * 获取某个时间段之前的时间点
     *
     *
     * @return
     */
    public static String getSomeTimeStapStr(String sign) {
@@ -489,7 +488,7 @@
    /**
     * 获取失效时间点(在什么时间失效)
     *
     *
     * @param minutes
     *            有效分钟数
     * @return
@@ -500,7 +499,7 @@
    /**
     * 获取当前年份
     *
     *
     * @return
     */
    public static String getCurrentYear() {
@@ -510,7 +509,7 @@
    /**
     * 获取当前月份
     *
     *
     * @return
     */
    public static String getCurrentMonth() {
@@ -527,7 +526,7 @@
    /**
     * 获取无符号的当前时间
     *
     *
     * @return
     */
    public static String getCurrentDateStrNoSignal() {
@@ -536,7 +535,7 @@
    /**
     * 获取前几个小时的时间
     *
     *
     * @param hours
     * @return
     */
@@ -552,7 +551,7 @@
    /**
     * 小时取整
     *
     *
     * @param date
     * @param hour
     * @return
@@ -573,7 +572,7 @@
    /**
     * 分钟取整 以十分钟为单位 ,去除尾端,加上 参数 46->40+minutes*10
     *
     *
     * @param date
     * @param minutes
     * @return
@@ -601,7 +600,7 @@
    /**
     * 天数取整
     *
     *
     * @param date
     * @param day
     * @return
@@ -622,7 +621,7 @@
    /**
     * 日期相加减
     *
     *
     * @param time
     *            时间字符串 yyyy-MM-dd HH:mm:ss
     * @param num
@@ -684,7 +683,7 @@
    /**
     * 获取当前月第一天
     *
     *
     * @return
     */
    public static Date getFirstDayOfMonth() {
@@ -697,7 +696,7 @@
    /**
     * 获取当前年月的第一天时间
     *
     *
     * @param year
     *            年份
     * @param month
@@ -721,7 +720,7 @@
    /**
     * 获取当前年月的最后一天时间
     *
     *
     * @param year
     *            年份
     * @param month
@@ -781,7 +780,7 @@
    /**
     * date2比date1多的天数
     *
     *
     * @param date1
     * @param date2
     * @return
@@ -840,7 +839,7 @@
    /**
     * 获取当前月第一天
     *
     *
     * @return
     */
    public static String getFirstDayOfMonthString() {
@@ -856,7 +855,7 @@
    /**
     * 获取当前月最后一天
     *
     *
     * @return
     */
    public static String getLastDayOfMonthString() {
@@ -887,7 +886,7 @@
    /**
     * 获取当前时间(年月日)
     *
     *
     * @return
     */
    public static String getDayOfMonthString() {
@@ -927,11 +926,10 @@
    }
    public static void main(String[] args) throws Exception {
         Date date= getLastMonthFirst();
         Date after = getLastMonthEnd();
         System.out.println(date);
         System.out.println(after);
//        List<String> beforeDays = getBeforeDays(15);
//        System.out.println(beforeDays);
        List<String> yearMonths = getYearMonths();
        System.out.println(yearMonths);
    }
@@ -1015,4 +1013,194 @@
        }
        return dates;
    }
    /**
     * 获取上月最后一天时间
     * @return  上月最后一天时间
     */
    public static String getOldMonthLastDay(){
        Calendar calendar=Calendar.getInstance();
        int month=calendar.get(Calendar.MONTH);
        calendar.set(Calendar.MONTH, month-1);
        calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
        return format_yyymmdd.format(calendar.getTime());
    }
    /**
     * 获取上月第一天时间
     * @return  上月第一天时间
     */
    public static String getOldMonthFirstDay(){
        Calendar calendar=Calendar.getInstance();
        calendar.add(Calendar.MONTH, -1);
        calendar.set(Calendar.DAY_OF_MONTH, 1);
        return format_yyymmdd.format(calendar.getTime());
    }
    /**
     * 获取某年的月份最后一天时间
     * @param year  年份
     * @return  月份list
     */
    public static List<String> getYearLastMonths(Integer year){
        List<String> list = new ArrayList<>();
        list.add(getLastDayOfMonth(year,1));
        list.add(getLastDayOfMonth(year,2));
        list.add(getLastDayOfMonth(year,3));
        list.add(getLastDayOfMonth(year,4));
        list.add(getLastDayOfMonth(year,5));
        list.add(getLastDayOfMonth(year,6));
        list.add(getLastDayOfMonth(year,7));
        list.add(getLastDayOfMonth(year,8));
        list.add(getLastDayOfMonth(year,9));
        list.add(getLastDayOfMonth(year,10));
        list.add(getLastDayOfMonth(year,11));
        list.add(getLastDayOfMonth(year,12));
        return list;
    }
    /**
     * 获取某年的月份第一天时间
     * @param year  年份
     * @return  月份list
     */
    public static List<String> getYearFirstMonths(Integer year){
        List<String> list = new ArrayList<>();
        list.add(getFirstDayOfMonth(year,1));
        list.add(getFirstDayOfMonth(year,2));
        list.add(getFirstDayOfMonth(year,3));
        list.add(getFirstDayOfMonth(year,4));
        list.add(getFirstDayOfMonth(year,5));
        list.add(getFirstDayOfMonth(year,6));
        list.add(getFirstDayOfMonth(year,7));
        list.add(getFirstDayOfMonth(year,8));
        list.add(getFirstDayOfMonth(year,9));
        list.add(getFirstDayOfMonth(year,10));
        list.add(getFirstDayOfMonth(year,11));
        list.add(getFirstDayOfMonth(year,12));
        return list;
    }
    /**
     * 获取某年某月最后一天
     * @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);
        //格式化日期
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        String lastDayOfMonth = sdf.format(cal.getTime());
        return lastDayOfMonth;
    }
    /**
     *  获取某年某月的第一天
     * @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 firstDay = cal.getActualMinimum(Calendar.DAY_OF_MONTH);
        //设置日历中月份的最小天数
        cal.set(Calendar.DAY_OF_MONTH, firstDay);
        //格式化日期
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        String firstDayOfMonth = sdf.format(cal.getTime());
        return firstDayOfMonth;
    }
    /**
     * 获取20天前那天时间
     *
     * @return
     */
    public static String getTwentyDay() {
        Calendar cal = Calendar.getInstance();
        cal.setTime(new Date());
        cal.add(Calendar.DATE, -20);
        return DateUtil.format(cal.getTime(),"yyyy-MM-dd");
    }
    /**
     * 获取之前的日期
     *
     * @return
     */
    public static String getBeforeDay(Integer amount) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(new Date());
        cal.add(Calendar.DATE, -amount);
        return DateUtil.format(cal.getTime(),"yyyy-MM-dd");
    }
    /**
     * 获取最近本月20天数据
     *
     * @return
     */
    public static String getMonthTwentyDay() {
        Date date = new Date();
        Long offset = DateUtil.between(new Date(), DateUtil.beginOfMonth(date), DateUnit.DAY);
        if (offset >= 20) {
            return getTwentyDay();
        } else {
            //距离月初不足20天
            Calendar calendar = new GregorianCalendar();
            calendar.setTime(date);
            //获得本月第一天
            calendar.add(Calendar.MONTH, 0);
            calendar.set(Calendar.DAY_OF_MONTH, 1);
            return DateUtil.format(calendar.getTime(),"yyyy-MM-dd");
        }
    }
    public static List<String> getBeforeDays(int before) {
        List<String> dates = new ArrayList<>();
        for (int i = before; i >= 0; i--) {
            dates.add(getBeforeDay(i));
        }
        return dates;
    }
    /**
     * 获取当年所有月份
     *
     * @return
     */
    public static List<String> getYearMonths() {
        Calendar instance = Calendar.getInstance();
        int year = instance.get(Calendar.YEAR);
        List<String> months = new ArrayList<>();
        for (int i = 1; i <= 12; i++) {
            String result = String.valueOf(year);
            if (i < 10) {
                result = result + "-0" +i;
            } else {
                result = result + "-"+i;
            }
            months.add(result);
        }
        return months;
    }
}