В
Calendar месяцы нумеруются с нуля: январь 0, май 4, июнь 5. Простая ловушка, которая легко превращается в баг.Начиная с Java 8, для нового кода выбирайте
java.time:
LocalDate date = LocalDate.of(2026, 5, 31);
LocalDate deadline = date.plusDays(7);
String text = deadline.format(
DateTimeFormatter.ISO_LOCAL_DATE
);
// 2026-06-07
Здесь
5 означает май, а plusDays() возвращает новый объект, сохраняя исходную дату. Основные типы java.time неизменяемы и безопасны для совместного использования потоками.Помните: `LocalDateTime` не содержит часового пояса. Для однозначного момента события используйте
Instant или задавайте пояс явно.
