Как прибавить дни к дате
Короткий ответ
plusDays() возвращает новую дату, сдвинутую на нужное количество дней:
void main() {
var order = LocalDate.of(2026, 3, 8);
var delivery = order.plusDays(5);
IO.println(delivery);
}Результат:
2026-03-13Месяцы, недели, годы
Похожие методы есть для всех единиц. Отрицательные значения и minus...() сдвигают назад:
void main() {
var date = LocalDate.of(2026, 3, 8);
IO.println(date.plusWeeks(2));
IO.println(date.plusMonths(1));
IO.println(date.minusYears(1));
IO.println(date.minusDays(10));
}Результат:
2026-03-22
2026-04-08
2025-03-08
2026-02-26Конец месяца
Если в новом месяце нет такого дня, Java берёт последний день месяца:
void main() {
IO.println(LocalDate.of(2026, 1, 31).plusMonths(1));
}Результат:
2026-02-28Рабочие дни
Чтобы пропускать выходные, прибавляйте по одному дню и проверяйте день недели:
LocalDate addWorkingDays(LocalDate date, int days) {
var result = date;
int added = 0;
while (added < days) {
result = result.plusDays(1);
if (result.getDayOfWeek() != DayOfWeek.SATURDAY && result.getDayOfWeek() != DayOfWeek.SUNDAY) {
added++;
}
}
return result;
}
void main() {
IO.println(addWorkingDays(LocalDate.of(2026, 3, 6), 3));
}Результат:
2026-03-11Частая ошибка
Вызвать plusDays() и не сохранить результат. LocalDate неизменяем — метод не меняет дату, а возвращает новую:
void main() {
var date = LocalDate.of(2026, 3, 8);
date.plusDays(5);
IO.println(date);
}Результат:
2026-03-08Функции из этого ответа
- LocalDate.plusDays() — Возвращает дату на указанное число дней позже. Рядом — minusDays(), plusWeeks(), plusMonths(), plusYears().
- LocalDate.of() — Создаёт дату из года, месяца и дня.