Год состоит из 4 кварталов(обычно обозначаемых как Q1, Q2, Q3 и Q4), а каждый квартал состоит из 3 месяцев. В этом руководстве по Java обсуждаются подходы к получению информации о текущем квартале, начальной и конечной дате текущего квартала. Мы также научимся получать начальную и конечную дату любого конкретного квартала.
1. Получить квартал на указанную дату
Новые API даты и времени Java 8 содержат класс java.time.temporal.IsoFields, имеющий поля(и единицы), которые следуют календарной системе на основе стандарта ISO-8601. Среди этих полей у нас есть поле для нашего варианта использования, то есть IsoFields.QUARTER_OF_YEAR.
Давайте посмотрим, как можно использовать это поле, чтобы получить номер квартала в виде целочисленного значения.
LocalDate localDate = LocalDate.now(); // Given dateint currentQuarter = localDate.get(IsoFields.QUARTER_OF_YEAR); // returns 1, 2, 3 or 4
Если мы хотим получить номер квартала в отформатированном шаблоне(Q1, Q2 и т. д.) для отображения, мы можем использовать DateTimeFormatter и шаблон «QQQ».
String currentQuarterStr1 = localDate.format(DateTimeFormatter.ofPattern("QQQ"));String currentQuarterStr2 = localDate.format(DateTimeFormatter.ofPattern("QQQQ"));System.out.println(currentQuarterStr1);System.out.println(currentQuarterStr2);
Вывод программы:
Q11st quarter
Из выходных данных мы можем убедиться, что можем получить номер текущего квартала года.
2. Получите дату начала и окончания квартала
Подобно предыдущему примеру, мы можем использовать поле IsoFields.DAY_OF_QUARTER для доступа к первому дню и последней дате квартала. Давайте рассмотрим это на примере.
LocalDate firstDay = localDate.with(IsoFields.DAY_OF_QUARTER, 1L);LocalDate lastDay = firstDay.plusMonths(2).with(TemporalAdjusters.lastDayOfMonth());System.out.println(firstDay);System.out.println(lastDay);
Вывод программы:
2024-01-012024-03-31
Таким образом мы можем найти дату начала и дату окончания текущего квартала.
3. Получите количество кварталов между двумя датами
Если у нас есть два значения LocalDate и мы хотим вычислить количество кварталов между этими датами, мы можем выполнить расчет с помощью IsoFields.QUARTER_YEARS, который представляет концепцию квартала года и может использоваться следующим образом:
long quarterCount = IsoFields.QUARTER_YEARS.between(startDate, endDate);
4. Заключение
В этом кратком руководстве по Java продемонстрировано использование новых API Java 8 для получения информации о текущем квартале, а также о дате начала и окончания текущего квартала.