Zend_Date не работает, кажется - PullRequest
2 голосов
/ 31 января 2012

Я работал с Zend_Date. Может кто-нибудь сказать мне, если поведение ниже нормальное? Возвращенные месяцы кажутся неправильными. Я поставил вывод в комментариях.

Спасибо за любую помощь!

$oDate = new Zend_Date();

$oDate->setMonth(1);
$oDate->setDay(15);
$oDate->setYear(2012);
echo $oDate->get(Zend_Date::DATETIME_FULL);//Sunday, January 15, 2012 8:24:59 PM Europe/Madrid

$oDate->setMonth(2);
echo $oDate->get(Zend_Date::DATETIME_FULL);//Thursday, March 15, 2012 8:25:20 PM Europe/Madrid

$oDate->setMonth(3);
echo $oDate->get(Zend_Date::DATETIME_FULL);//Thursday, March 15, 2012 8:25:40 PM Europe/Madrid

$oDate->setMonth(4);
echo $oDate->get(Zend_Date::DATETIME_FULL);//Tuesday, May 15, 2012 8:27:32 PM Europe/Madrid

$oDate->setMonth(5);
echo $oDate->get(Zend_Date::DATETIME_FULL);//Tuesday, May 15, 2012 8:28:05 PM Europe/Madrid

1 Ответ

1 голос
/ 20 февраля 2013

Ключом является ваша исходная дата публикации.

В месяцах, в которых есть 31 день, если вы находитесь на 31-й день и установите для параметра Month () месяц с меньшим количеством дней (например, февраль, апрель, июнь, сентябрь или ноябрь), он вычисляет дату как 31-й день этого месяца, который переполняется до 1 числа следующего месяца.

Сценарий выше не был запущен как есть, но был запущен:

  $oDate->setMonth();
  $oDate->setDay();
  $oDate->setYear();
  echo ...

за каждый месяц, отсюда и разное время.

Проблема проявляется только 31-го числа данного месяца (следовательно, почему, когда ответы были опубликованы, люди не могли повторить проблему), при установке на апрель, июнь, сентябрь или ноябрь; или 29/30/31-го числа месяца при установке месяца на февраль.

Это можно исправить в приведенных выше примерах, указав сначала день, , затем месяц (так как месяц не переполнится).

Вы, конечно, получаете ту же проблему в обратном порядке, когда вы находитесь в месяце с <31 днем, и устанавливаете дни = 31, что переполняется до 1-го числа следующего месяца, то есть ваша дата будет затем 1-го числа правильный месяц! </p>

К сожалению, мне еще предстоит найти простое исправление для этого (кроме написания нового класса дат на основе PHP-класса DateTime).

Надеюсь, это поможет!

...