70. Extracting the months from a given quarter
This problem becomes quite accessible if we are familiar with the JDK 8, java.time.Month
. Via this API, we can find the first month (0 for January, 1 for February, …) of a quarter containing the given LocalDate
as Month.from(LocalDate).firstMonthOfQuarter().getValue()
.Once we have the first month is easy to obtain the other two as follows:
public static List<String> quarterMonths(LocalDate ld) {
List<String> qmonths = new ArrayList<>();
int qmonth = Month.from(ld)
.firstMonthOfQuarter().getValue();
qmonths.add(Month.of(qmonth).name());
qmonths.add(Month.of(++qmonth).name());
qmonths.add(Month.of(++qmonth).name());
return qmonths;
}
How about passing as argument the quarter itself? This can be done as a number (1, 2, 3, or 4) or as a string (Q1, Q2, Q3, or Q4). If the given quarter
is a number then the first month of the quarter can be obtained as quarter
* 3 – 2, where the quarter
...