Особенности работы с годом в Zend_Date
|
Опубликовано: 30.12.2008
|
Сегодня заметил я забавную вещь. На проекте которым сейчас занимаюсь все даты за текущий день переместились в будущее, например когда я вбивал дату 29.12.2008, она превращалась в 29.12.2009. В проекте используется Zend Framework и Zend_Date в частности. Для работы с датой я использовал формат "dd.MM.YYYY". Причем раньше все работало как часы и нареканий не было. Полез я в исходники, но за полчаса анализа ничего толком не нашел. Тогда я решил, что это баг и стал просматривать багтрекер, где и нашел решение проблемы.
Оказалось, что я использовал не верную константу для обозначения года, необходимо использовать "yyyy" вместо "YYYY". Разница в том, что "y" обозначает реальный год, а "Y" год в формате ISO 8601. Этот формат используется для календарей, когда мы хотим вывести например список дней месяца, и при этом написать год (не каждый день месяца будет реально принадлежать этому году).
Вот такая не большая особенность может привести к довольно не приятным последствиям. Так что если вы используете константу "Y" будьте внимательны. Решил написать об этом, так как в багтрекере уже не один человек заявил об этом баге, который в итоге оказался фичей.
Описание проблемы в багтрекере.
Список констант для форматирования даты.

