获取指定日期所在季度的开始结束时间

简介 获取指定日期所在季度的开始结束时间import java.text.ParseException;import java.text.SimpleDateFormat;import java.time.LocalDateTime;import java.time.Month;import java.time.format.DateTimeFormat

🔔🔔🔔好消息!好消息!🔔🔔🔔

有需要的朋友👉:联系凯哥 微信号 kaigejava2022

获取指定日期所在季度的开始结束时间

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.Month;
import java.time.format.DateTimeFormatter;
import java.util.Date;

public class QuarterCalculatorUtils {

    private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");

    /**
     * 获取指定日期所在季度的开始时间
     *
     * @param date 指定日期
     * @return 季度开始时间
     */
    public String getQuarterStart(LocalDateTime date) {
        Month month = date.getMonth();
        int quarterMonthStart = (month.getValue() - 1) / 3 * 3 + 1; // 计算季度首月
        LocalDateTime start = LocalDateTime.of(date.getYear(), Month.of(quarterMonthStart), 1, 0, 0); // 设置时间为00:00:00
        return start.format(FORMATTER);
    }

    /**
     * 获取指定日期所在季度的结束时间
     *
     * @param date 指定日期
     * @return 季度结束时间
     */
    public String getQuarterEnd(LocalDateTime date) {
        Month month = date.getMonth();
        int quarterMonthEnd = (month.getValue() - 1) / 3 * 3 + 3; // 计算季度末月
        LocalDateTime end = LocalDateTime.of(date.getYear(), Month.of(quarterMonthEnd), 1, 0, 0)
                .plusMonths(1) // 跳到下个月
                .minusDays(1) // 减去一天回到当月最后一天
                .withHour(23) // 设置小时为23
                .withMinute(59) // 设置分钟为59
                .withSecond(59); // 设置秒为59
        return end.format(FORMATTER);
    }

    /**
     * 获取指定日期所在年度的开始时间
     *
     * @param date 指定日期
     * @return 年度开始时间
     */
    public String getYearStart(LocalDateTime date) {
        LocalDateTime start = LocalDateTime.of(date.getYear(), 1, 1, 0, 0); // 设置时间为00:00:00
        return start.format(FORMATTER);
    }

    /**
     * 获取指定日期所在年度的结束时间
     *
     * @param date 指定日期
     * @return 年度结束时间
     */
    public String getYearEnd(LocalDateTime date) {
        LocalDateTime end = LocalDateTime.of(date.getYear(), 12, 31, 23, 59, 59); // 设置时间为23:59:59
        return end.format(FORMATTER);
    }

    /**
     * 将字符串类型的日期转换为 Date 类型
     *
     * @param dateString 日期字符串
     * @param pattern    日期模式
     * @return 转换后的 Date 对象
     */
    public static Date stringToDate(String dateString, String pattern) {
        SimpleDateFormat sdf = new SimpleDateFormat(pattern);
        try {
            return sdf.parse(dateString);
        } catch (ParseException e) {
            throw new RuntimeException(e);
        }
    }
}


TopTop