首页javadateJava Data Type - 如何得到两个给定日期之间的季度数

Java Data Type - 如何得到两个给定日期之间的季度数

我们想知道如何得到两个给定日期之间的季度数。
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;
    }
  }

}