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
[sc:social_networks ]
You can leave a response, or trackback from your own site.