101captain
2022-01-21 94782e82d05ae42e3fd59be93668b48bbb114a15
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/DateUtils.java
@@ -4,8 +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 lombok.extern.slf4j.Slf4j;
@@ -23,8 +25,12 @@
    public static DateTimeFormatter format_ymd_String = DateTimeFormatter.ofPattern("yyMMdd");
    public static SimpleDateFormat yyyyMM_format = new SimpleDateFormat("yyyy-MM");
    public static SimpleDateFormat format_yyymmdd = new SimpleDateFormat("yyyyMMdd");
    public static SimpleDateFormat format_yyyy = new SimpleDateFormat("yyyy");
    public static SimpleDateFormat format_yyyyMMddHHmmss = new SimpleDateFormat("yyyyMMddHHmmss");
    private static DateTimeFormatter format_ymdhmssss = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS");
    private static DateTimeFormatter format_ymds = DateTimeFormatter.ofPattern("yyyyMMdd");
    private static DateTimeFormatter format_yms = DateTimeFormatter.ofPattern("yyyyMM");
    private static DateTimeFormatter format_y = DateTimeFormatter.ofPattern("yyyy");
    /**
     * 将日期对象格式化成指定的字符串格式
@@ -759,6 +765,12 @@
        return instance.get(Calendar.MONTH);
    }
    public static int getYear(Date date) {
        Calendar instance = Calendar.getInstance();
        instance.setTime(date);
        return instance.get(Calendar.YEAR);
    }
    public static boolean before(Date start, Date end) {
        Calendar date1 = Calendar.getInstance();
        date1.setTime(start);
@@ -807,6 +819,26 @@
    }
    /**
     * 计算剩余天数,不足一天按一天算
     * @param expireDate
     * @return
     */
    public static int retrieveRemainingDays(Date expireDate) {
        Date nowDate = new Date();
        Calendar startDate = Calendar.getInstance();
        startDate.setTime(nowDate);
        Calendar endDate = Calendar.getInstance();
        endDate.setTime(expireDate);
        Calendar date = (Calendar) startDate.clone();
        int daysBetween = 0;
        while (date.before(endDate)) {
            date.add(Calendar.DAY_OF_MONTH, 1);
            daysBetween++;
        }
        return daysBetween;
    }
    /**
     * 获取当前月第一天
     * 
     * @return
@@ -836,6 +868,21 @@
        // 格式化日期
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        return sdf.format(calendar.getTime()) + " 23:59:59";
    }
    /**
     * 获取当前月最后一天
     *
     * @return
     */
    public static Date getLastDayOfMonth() {
        Calendar calendar = Calendar.getInstance();
        calendar.add(Calendar.MONTH, 1);
        calendar.set(Calendar.DAY_OF_MONTH, 0);
        // 格式化日期
        return calendar.getTime();
    }
    /**
@@ -880,10 +927,92 @@
    }
    public static void main(String[] args) throws Exception {
        // Date date= new Date();
        // Date after = new Date();
        // System.out.println(getFirstDayOfMonthString());
        // System.out.println(getDayOfMonthString());
         Date date= getLastMonthFirst();
         Date after = getLastMonthEnd();
         System.out.println(date);
         System.out.println(after);
    }
    /**
     * 获取当前年月字符串
     * @return  年月字符串
     */
    public static String getCurrentDateString_YYYY_MM() {
        String nowtime = getCurrentDate().format(format_yms);
        return nowtime;
    }
    /**
     * 获取当前年字符串
     * @return
     */
    public static String getCurrentDateString_YYYY() {
        String nowtime = getCurrentDate().format(format_y);
        return nowtime;
    }
    /**
     * 获取当前年第一天
     * @return  当前年第一天时间
     */
    public static Date getFirstDayOfYear() {
        Calendar currCal=Calendar.getInstance();
        int currentYear = currCal.get(Calendar.YEAR);
        return getYearFirst(currentYear);
    }
    /**
     * 获取某年第一天日期
     * @param year 年份
     * @return Date
     */
    public static Date getYearFirst(int year){
        Calendar calendar = Calendar.getInstance();
        calendar.clear();
        calendar.set(Calendar.YEAR, year);
        Date currYearFirst = calendar.getTime();
        return currYearFirst;
    }
    /**
     * 获取上月第一天时间
     * @return  上月第一天时间
     */
    public static Date getLastMonthFirst(){
        // 上月起始
        Calendar lastMonthFirstDateCal = Calendar.getInstance();
        lastMonthFirstDateCal.add(Calendar.MONTH,-1);
        lastMonthFirstDateCal.set(Calendar.DAY_OF_MONTH, 1);
        String lastMonthFirstTime = yyyyMMdd_format.format(lastMonthFirstDateCal.getTime()) + " 00:00:00";
        return stringToDateStandard(lastMonthFirstTime);
    }
    /**
     * 获取上月最后一天时间
     * @return  最后一天时间
     */
    public static Date getLastMonthEnd(){
        // 上月末尾
        Calendar lastMonthEndDateCal = Calendar.getInstance();
        lastMonthEndDateCal.add(Calendar.MONTH,-1);
        lastMonthEndDateCal.set(Calendar.DAY_OF_MONTH, lastMonthEndDateCal.getActualMaximum(Calendar.DAY_OF_MONTH));
        String lastMonthEndTime = yyyyMMdd_format.format(lastMonthEndDateCal.getTime()) + " 23:59:59";
        return stringToDateStandard(lastMonthEndTime);
    }
    /**
     * 获取近20天日期
     * @return  近20天日期
     */
    public static List<Date> getOldDays() {
        List<Date> dates = new ArrayList<>();
        Date date = new Date();
        for (int i = 19; i >= 0; i--) {
            Date date1 = DateUtils.addDay(date, -i);
            dates.add(date1);
        }
        return dates;
    }
}