PVS-Studio: поиск ошибок в коде программ
29.10
🚀Рассказываем о диагностиках в новом релизе
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`еще контент в этом сообществе
еще контент в этом соообществе
PVS-Studio: поиск ошибок в коде программ
29.10
войдите, чтобы увидеть
и подписаться на интересных профи