Календарный период в Java
Period хранит календарный шаг: годы, месяцы
и дни. Так считают срок подписки, возраст или
разницу между двумя датами в календаре. Секунды
и часы сюда не входят.
Период между датами дает Period.between.
Фиксированный интервал собирают ofYears,
ofMonths, ofDays или разбором
строки ISO P1Y2M3D:
import java.time.LocalDate;
import java.time.Period;
public class Main {
public static void main(String[] args) {
LocalDate a = LocalDate.of(2019, 12, 31);
LocalDate b = LocalDate.of(2020, 2, 1);
Period gap = Period.between(a, b);
System.out.println(gap.getMonths());
System.out.println(gap.getDays());
}
}
К дате период прибавляют plus и вычитают
minus. Метод учитывает длину месяцев и
високосные годы:
import java.time.LocalDate;
import java.time.Period;
public class Main {
public static void main(String[] args) {
LocalDate start = LocalDate.of(2024, 1, 31);
LocalDate next = start.plus(Period.ofMonths(1));
System.out.println(next);
}
}
Текстовое представление периода удобно для отладки:
toString вернет форму вроде P1M1D.
Не путайте Period с Duration:
между полночью и полуднем на одной дате период
нулевой, а длительность - полдня.
Найдите период от 2022-01-15 до текущей
даты и выведите количество лет.
Даны даты 2025-01-10 и 2025-04-20.
Выведите текстовое представление периода между ними.