首页 > 解决方案 > 给定第一季度的第一个日期,如何生成一年的自定义季度?

问题描述

如果我给出04-Mar-2019第一季度的第一天,我想要所有季度的开始和结束日期04-Mar-2019 to 03-Mar-2020。我怎样才能在 Java 中做到这一点?提前致谢。

Input - 1st day of 1st Quarter (04-Mar-2019)
Output - 
             Q1 - 04-Mar-2019 to ....
             Q2 - 
             Q3 - 
             Q4 - ... to 03-Mar-2020

标签: javadatetimecalendar

解决方案


java.time

    LocalDate quarterStart = LocalDate.of(2019, Month.MARCH, 4);
    for (int q = 1; q <= 4; q++) {
        System.out.println("Q" + q + " begins on " + quarterStart);
        quarterStart = quarterStart.plusMonths(3);
        System.out.println(" - ends on " + quarterStart.minusDays(1));
    }

这个循环打印:

Q1 begins on 2019-03-04
 - ends on 2019-06-03
Q2 begins on 2019-06-04
 - ends on 2019-09-03
Q3 begins on 2019-09-04
 - ends on 2019-12-03
Q4 begins on 2019-12-04
 - ends on 2020-03-03

出于很多目的,您不想明确结束日期。每个人都知道,每个季度都会在下一个季度开始时结束。所以考虑省略第二个System.out.println电话,这只是多余的。

请注意,您不希望一个季度从一个月的 29、30 或 31 日开始,否则当您遇到没有那么多天的月份时,会发生奇怪的事情。

链接: Oracle 教程:解释如何使用 java.time 的日期时间。


推荐阅读