Java 7: особенности обработки даты при использовании Y в последнюю неделю года

Использование заглавной буквы «Y» для отображения даты было представлено в java 7. И, как оказывается, тут есть подводный камень: этот способ отображения может вывести дату в январе не 2014, а 2015 года. К примеру, для даты 2014/29/12 формат «YYYY/MM/dd» выдаст 2015/12/29. Ошибка происходит при выполнении двух условий:

— строка формата содержит Y
— для форматирования передан момент времени (timestamp), соответствующий последней неделе года

В качестве исправления можно посоветовать использование строчной буквы «y». Ну и возможно придется исправить обработчики имен файлов или парсер дат для уже сгенерированных логов.

Ссылки по теме:
http://docs.oracle.com/javase/7/docs/api/java/util/GregorianCalendar.html#week_and_year
http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html#year

You can leave a response, or trackback from your own site.

Leave a Reply