TGViewer
Java Java @javatg · 16.7K subscribers
Post #2354 1.7K
💡 Java: почему месяц `5` может оказаться июнем

В 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 или задавайте пояс явно.
  • 👍 12
  • ❤ 2
More from @javatg
  1. Oct 16, 2026🍃 Не раскладывайте весь Spring-проект по папкам controller, service и repository. В новом…
  2. Oct 15, 2026💡 100% покрытия тестами ≠ код без багов Coverage показывает, какие строки выполнились во…
  3. Oct 13, 2026💡 Описывайте состояния через enum вместо строк Статусы вроде "pending" и "finished" легко…
  4. Oct 12, 2026💡 Код работает на обычных данных? Проверьте, что происходит на границах. Баги часто прячу…
  5. Oct 8, 2026🚀 Spring Boot 4: переименовали property для exception translation Было: spring.dao.except…
  6. Oct 6, 2026💡 Предпочитайте делегирование наследованию Связь is-a выглядит удобно: создаём подкласс,…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →