Java Date 判断两个Date范围在第几季度

在 Java 里,可以借助java.util.Datejava.util.Calendar类来判断两个Date对象所处的季度。以下是具体的实现代码:

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

public class DateQuarterChecker {
    
    
    public static int getQuarter(Date date) {
    
    
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        int month = calendar.get(Calendar.MONTH) + 1;
        return (month - 1) / 3 + 1;
    }

    public static void main(String[] args) {
    
    
        // 示例日期
        Date startDate = new Date();
        Date endDate = new Date();

        int startQuarter = getQuarter(startDate);
        int endQuarter = getQuarter(endDate);

        System.out.println("开始日期所在季度: " + startQuarter);
        System.out.println("结束日期所在季度: " + endQuarter);
    }
}

说明:

  1. getQuarter方法:该方法接收一个Date对象作为参数,将其转化为Calendar对象。接着获取该日期的月份,根据月份算出对应的季度。
  2. main方法:这里创建了两个示例Date对象startDateendDate,并调用getQuarter方法来得到它们各自所在的季度,最后把结果打印输出。

import java.time.Instant;
import java.time.LocalDate;
import java.time.ZoneId;
import java.util.Date;

public class DateQuarterCheckerUsingJavaTime {
    
    

    public static int getQuarter(Date date) {
    
    
        // 将 Date 对象转换为 LocalDate 对象
        Instant instant = date.toInstant();
        LocalDate localDate = instant.atZone(ZoneId.systemDefault()).toLocalDate();
        int month = localDate.getMonthValue();
        return (month - 1) / 3 + 1;
    }

    public static void main(String[] args) {
    
    
        // 示例日期
        Date sampleDate = new Date();
        int quarter = getQuarter(sampleDate);
        System.out.println("该日期所在季度: " + quarter);
    }
}

将Date对象转换为Instant对象,Instant表示时间线上的一个瞬时点。通过atZone方法将Instant对象转换为指定时区的ZonedDateTime对象,再调用toLocalDate方法得到LocalDate对象,LocalDate表示一个日期(年、月、日)。
然后,使用getMonthValue方法获取月份,根据月份计算出对应的季度。

在这里插入图片描述