java 查询日期月末、季末、年末,上月末、上季末、上年末,以及两个日期是否是同一月,同一季,同一年

package com.dc.galaxydata.model;

import com.dc.common.util.DateUtil;

import java.util.Calendar;
import java.util.Date;

public class DateLastEndUtil {

    public static void main(String[] args) {
//        System.out.println(DateUtil.format(lastMonthEnd(new Date()), DateUtil.YMD_STANDARD_FORMAT));
//        System.out.println(DateUtil.format(lastQueryEnd(new Date()), DateUtil.YMD_STANDARD_FORMAT));
//        System.out.println(DateUtil.format(lastYearEnd(new Date()), DateUtil.YMD_STANDARD_FORMAT));
//        System.out.println(DateUtil.format(monthEnd(new Date()), DateUtil.YMD_STANDARD_FORMAT));
//        System.out.println(DateUtil.format(queryEnd(new Date()), DateUtil.YMD_STANDARD_FORMAT));
//        System.out.println(DateUtil.format(yearEnd(new Date()), DateUtil.YMD_STANDARD_FORMAT));

//        System.out.println(DateUtil.format(getMonthEnd(DateUtil.parse("2024-05-30", DateUtil.YMD_STANDARD_FORMAT)), DateUtil.YMD_STANDARD_FORMAT));
//        System.out.println(DateUtil.format(getQuarterEnd(DateUtil.parse("2024-05-30", DateUtil.YMD_STANDARD_FORMAT)), DateUtil.YMD_STANDARD_FORMAT));
//        System.out.println(DateUtil.format(getYearEnd(DateUtil.parse("2024-05-30", DateUtil.YMD_STANDARD_FORMAT)), DateUtil.YMD_STANDARD_FORMAT));
//        System.out.println(DateUtil.format(getPreMonthEnd(DateUtil.parse("2024-05-30", DateUtil.YMD_STANDARD_FORMAT)), DateUtil.YMD_STANDARD_FORMAT));
//        System.out.println(DateUtil.format(getPreQuarterEnd(DateUtil.parse("2024-05-30", DateUtil.YMD_STANDARD_FORMAT)), DateUtil.YMD_STANDARD_FORMAT));
//        System.out.println(DateUtil.format(getPreYearEnd(DateUtil.parse("2024-05-30", DateUtil.YMD_STANDARD_FORMAT)), DateUtil.YMD_STANDARD_FORMAT));

        System.out.println(getSameYearFlag(DateUtil.parse("2023-05-30", DateUtil.YMD_STANDARD_FORMAT),DateUtil.parse("2024-05-30", DateUtil.YMD_STANDARD_FORMAT)));
    }

    public static Boolean getSameMonthFlag(Date beginDate, Date endDate) {
        Calendar beginCalendar = Calendar.getInstance();
        beginCalendar.setTime(beginDate);
        Calendar endCalendar = Calendar.getInstance();
        endCalendar.setTime(endDate);
        return beginCalendar.get(Calendar.YEAR) == endCalendar.get(Calendar.YEAR) &&
                beginCalendar.get(Calendar.MONTH) == endCalendar.get(Calendar.MONTH);
    }

    public static Boolean getSameQuarterFlag(Date beginDate, Date endDate) {
        Calendar beginCalendar = Calendar.getInstance();
        beginCalendar.setTime(beginDate);
        Calendar endCalendar = Calendar.getInstance();
        endCalendar.setTime(endDate);
        return beginCalendar.get(Calendar.YEAR) == endCalendar.get(Calendar.YEAR) &&
                beginCalendar.get(Calendar.MONTH) / 3 + 1 == endCalendar.get(Calendar.MONTH) / 3 + 1;
    }

    public static Boolean getSameYearFlag(Date beginDate, Date endDate) {
        Calendar beginCalendar = Calendar.getInstance();
        beginCalendar.setTime(beginDate);
        Calendar endCalendar = Calendar.getInstance();
        endCalendar.setTime(endDate);
        return beginCalendar.get(Calendar.YEAR) == endCalendar.get(Calendar.YEAR);
    }

    public static Date getMonthEnd(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.set(Calendar.DAY_OF_MONTH, 1);
        calendar.add(Calendar.MONTH, 1);
        calendar.add(Calendar.DATE, -1);
        return calendar.getTime();
    }

    public static Date getQuarterEnd(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);

        // 设置到当前季度的第一天
        calendar.set(Calendar.DAY_OF_MONTH, 1);

        // 根据月份移动到上一个季度的最后一天
        switch (calendar.get(Calendar.MONTH)) {
            case Calendar.JANUARY:
            case Calendar.FEBRUARY:
            case Calendar.MARCH:
                // 第一季度的最后一天是3月的最后一天
                calendar.set(Calendar.MONTH, Calendar.MARCH);
                break;
            case Calendar.APRIL:
            case Calendar.MAY:
            case Calendar.JUNE:
                // 第二季度的最后一天是6月的最后一天
                calendar.set(Calendar.MONTH, Calendar.JUNE);
                break;
            case Calendar.JULY:
            case Calendar.AUGUST:
            case Calendar.SEPTEMBER:
                // 第三季度的最后一天是9月的最后一天
                calendar.set(Calendar.MONTH, Calendar.SEPTEMBER);
                break;
            case Calendar.OCTOBER:
            case Calendar.NOVEMBER:
            case Calendar.DECEMBER:
                // 第四季度的最后一天是12月的最后一天
                calendar.set(Calendar.MONTH, Calendar.DECEMBER);
                break;
        }

        // 设置到季度的最后一天
        calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));

        return calendar.getTime();
    }

    public static Date getYearEnd(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        int currentYear = calendar.get(Calendar.YEAR);
        calendar.set(currentYear, Calendar.JANUARY, 1);
        calendar.add(Calendar.YEAR, 1);
        calendar.add(Calendar.DATE, -1);
        return calendar.getTime();
    }

    public static Date getPreMonthEnd(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.set(Calendar.DAY_OF_MONTH, 1);
        calendar.add(Calendar.DATE, -1);
        return calendar.getTime();
    }

    public static Date getPreQuarterEnd(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        int currentQuarter = calendar.get(Calendar.MONTH) / 3;
        calendar.set(Calendar.MONTH, currentQuarter * 3);
        calendar.set(Calendar.DAY_OF_MONTH, 1);
        calendar.add(Calendar.DAY_OF_MONTH, -1);
        return calendar.getTime();
    }

    public static Date getPreYearEnd(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        int currentYear = calendar.get(Calendar.YEAR);
        calendar.set(currentYear, Calendar.JANUARY, 1);
        calendar.add(Calendar.DATE, -1);
        return calendar.getTime();
    }

}

 

posted @ 2024-07-02 11:03  酷盖的小机灵  阅读(2)  评论(0编辑  收藏  举报