# Java Data Type How to - Get the number of quarters between two given dates

## Question

We would like to know how to get the number of quarters between two given dates.

```//from w  w  w .j a va  2s.co m
import java.time.LocalDate;
import java.time.Month;
import java.time.temporal.ChronoField;

public class Main {
public static void main(String[] argv) {
System.out.println(getQuarter(LocalDate.now()));
}

/**
* Calculates the number of quarters between two given dates
*
* @return Number of quarters
* @param date1
*          First given date cannot be null
* @param date2
*          Second given date cannot be null
*/
public static int getQuartersBetweenDates(LocalDate date1, LocalDate date2) {
LocalDate beginn = null;
LocalDate end = null;
if (date1.isBefore(date2)) {
beginn = date1;
end = date2;
} else {
beginn = date2;
end = date1;
}
int quarters = getQuarter(end) - getQuarter(beginn);
int years = end.get(ChronoField.YEAR) - beginn.get(ChronoField.YEAR);
quarters += years * 4;
return Math.abs(quarters);
}

/**
* Returns the current quarter of the given date
*
* @return int (0 .. 3)
* @param cal
*          Given date, cannot be null
*/
public static int getQuarter(LocalDate cal) {
int month = cal.get(ChronoField.MONTH_OF_YEAR);
switch (Month.of(month)) {
case JANUARY:
case FEBRUARY:
case MARCH:
default:
return 0;
case APRIL:
case MAY:
case JUNE:
return 1;
case JULY:
case AUGUST:
case SEPTEMBER:
return 2;
case OCTOBER:
case NOVEMBER:
case DECEMBER:
return 3;
}
}

}
```

The code above generates the following result.