🚀Рассказываем о диагностиках в новом релизе

Hello, Java-World! У нас вышла новая диагностика V6122. Мы лишили вас шанса опоздать куда-то на год, а если подробнее, то:

В Java классах, ответственных за форматирование дат (SimpleDateFormat и DateTimeFormatter), спецификаторы ‘Y’ и ‘y’ имеют разный смысл. Используя ‘Y’, вы получаете не просто год, а год с учётом текущей недели.

`public class Main { public static void main(String[] args) { Date date = new Date("2024/12/31"); String result = new SimpleDateFormat("YYYY-MM-dd").format(date); //2025-12-31 } }

По формату ISO-8601, первая неделя в году:

  • начинается с понедельника;
  • содержит минимум 4 дня своего года

Именно поэтому, 30 и 31 декабря войдут в первую неделю 2025 года.

То же самое касается ситуаций, когда неделя, включающая первые январские дни, не относится к первой неделе года. При таком условии, 1, а может быть 2 и 3 января будут входить в последнюю неделю предыдущего года.

Именно поэтому, на стыке старого и нового года мы может получить не то, что хотели. Если очень сильно упростить, ‘Y’ спецификатор позволяет вам путешествовать во времени, но правда без DeLorean’а и седого деда. Если вы к такому не готовы, советуем всё же использовать ‘y’ спецификатор для отображения года.

#PVS_Studio #java`

🚀Рассказываем о диагностиках в новом релизе
Hello, Java-World! У нас вышла новая диагностика V6122 | Сетка — социальная сеть от hh.ru