TGViewer
YeaHub Tech YeaHub Tech @yeahub_tech · 412 subscribers
Post #309 71
🔖 Java: Одна буква может отправить тебя на год в будущее!

Знаешь ли ты разницу между 'Y' и 'y' в паттерне даты Java?

🔸Проблема

Код:
Date date = new Date("2024/12/31");
var formatter = new SimpleDateFormat("dd-MM-YYYY");
System.out.println(formatter.format(date));


Результат:
31-12-2025  ← Уехали на год вперёд! 


А если использовать правильный:
var formatter = new SimpleDateFormat("dd-MM-yyyy");
// 31-12-2024 ✅



🔸 В чём разница?

`y` (lowercase) = обычный год → 2024, 2025

`Y` (UPPERCASE) = неделя-года (ISO 8601) → может быть на год больше/меньше!

🔸 Почему так?

Y использует ISO-8601 стандарт: первая неделя года — та, где четверг в январе.

31 декабря 2024 входит в первую неделю 2025, поэтому Y выдаёт 2025!

1 января 2027 входит в последнюю неделю 2026, поэтому Y выдаёт 2026!

🔸 Реальные баги

❌ Bouncy Castle — нашли несколько мест с 'Y', исправили на 'y'
❌ OpenGrok — то же самое


💡 Правило

🔸 Никогда не используй `Y` в паттерне даты, если не знаешь что это!
🔸 Используй `y` для обычного года



📎 Статья

🎙 Новости

📝 База вопросов
  • 👍 2
  • 🤯 2
  • ❤ 1
More from @yeahub_tech
  1. Oct 9, 2026#Собес #pipeline #ci #stage 🤔 Что происходит при автоматической сборке feature-ветки на s…
  2. Oct 8, 2026#course #задачи #тесты 📚 JavaScript. A3 Задачи Задачи на программирования на языке JavaSc…
  3. Oct 7, 2026#course #начинающие 📚 Твой Golang Твой Golang — это идеальный старт для освоения языка. П…
  4. Oct 5, 2026🧑‍💻 Вопросы с собесов для Node.js Разработчика 1. Как использовать Service Workers для р…
  5. Oct 2, 2026#Собес #transaction #propagation #required 🤔 Что такое propagation у транзакций и какие т…
  6. Oct 1, 2026#book #book 📚 Библия C#. 6-е изд. Автор: Михаил Фленов Это настольная книга программиста,…
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 →