zxl
5 小时以前 3b0516a2959e25576e4f3fda697a3b025d06c8c9
ycl-server/src/main/java/com/ycl/utils/DateUtils.java
@@ -1,6 +1,7 @@
package com.ycl.utils;
import org.apache.commons.lang3.time.DateFormatUtils;
import org.glassfish.jaxb.core.v2.TODO;
import javax.annotation.Nullable;
import java.lang.management.ManagementFactory;
@@ -8,6 +9,7 @@
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.*;
import java.util.Calendar;
import java.util.Date;
import java.util.Objects;
@@ -145,6 +147,14 @@
    }
    /**
     * 计算相差小时
     */
    public static int differentHoursByMillisecond(Date date1, Date date2)
    {
        return Math.abs((int) ((date2.getTime() - date1.getTime()) / (1000 * 3600)));
    }
    /**
     * 计算时间差
     *
     * @param endDate 最后时间
@@ -219,4 +229,79 @@
        LocalDateTime of = LocalDateTime.of(localDateTime.getYear(), localDateTime.getMonth(), localDateTime.getDayOfMonth(), 23, 59, 59);
        return Timestamp.valueOf(of);
    }
    /**
     * 获取某月开始日期
     */
    public static String getMouthStart(@Nullable Date date) {
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        Calendar c = Calendar.getInstance();
        if (date != null) {
            c.setTime(date); // 如果date不为null,则设置Calendar的日期为date
        }
        c.set(Calendar.DAY_OF_MONTH,1);
        return df.format(c.getTime());
    }
    /**
     * 获取某月结束日期
     */
    public static String getMouthEnd(@Nullable Date date) {
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        Calendar c = Calendar.getInstance();
        if (date != null) {
            c.setTime(date); // 如果date不为null,则设置Calendar的日期为date
        }
        c.set(Calendar.DAY_OF_MONTH, c.getActualMaximum(Calendar.DAY_OF_MONTH));
        return df.format(c.getTime());
    }
    /**
     * 获取指定Calendar的季度开始日期
      * @param calendar 日历
     * @return 季度第一天
     */
    public static Calendar getQuarterStart(Calendar calendar) {
        Calendar quarterStart = (Calendar) calendar.clone();
        // 设置为当前季度的第一个月的第一天
        quarterStart.set(Calendar.DAY_OF_MONTH, 1);
        int month = quarterStart.get(Calendar.MONTH);
        quarterStart.set(Calendar.MONTH, (month / 3) * 3);
        return quarterStart;
    }
    /**
     * 获取指定Calendar的季度结束日期
     * @param calendar 日历
     * @return 季度最后一天
     */
    public static Calendar getQuarterEnd(Calendar calendar) {
        Calendar quarterEnd = getQuarterStart(calendar);
        // 将月份设置为下一个季度的第一个月
        quarterEnd.add(Calendar.MONTH, 3);
        // 设置为那个月的最后一天
        quarterEnd.add(Calendar.DAY_OF_MONTH, -1);
        return quarterEnd;
    }
    public static Date getDay(int year,int month,int day) {
        // 获取Calendar实例,默认使用当前时区和语言环境
        Calendar calendar = Calendar.getInstance();
        // 清除Calendar中的所有字段值,以避免它们对当前日期时间有影响
        calendar.clear();
        // 设置年份、月份(注意:月份是从0开始的,所以8月是7)、日期
        calendar.set(Calendar.YEAR, year);
        calendar.set(Calendar.MONTH, month);
        calendar.set(Calendar.DAY_OF_MONTH, day);
        // Calendar.getTime()方法返回一个表示此Calendar时间值的Date对象
        Date date = calendar.getTime();
        return date;
    }
    public static Integer getDayOfMonth(Date date) {
        // 创建一个Calendar对象并设置为当前日期和时间
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        // 获取当前日期是当月中的第几天
        return calendar.get(Calendar.DAY_OF_MONTH);
    }
}