Zend_Dateオブジェクトに奇妙な問題があります。
セッターは、異なるシステムクロック日付で異なる操作を実行するようです。次のコードに従って、システムの日付が2013年1月28日であると仮定します。
$now=new Zend_Date(Zend_Date::ISO_8601);
$now->now();
echo '<br/>now: ' . $now->toString();
echo '<br/>now->day: ' . $now->get(Zend_Date::DAY);
echo '<br/>now->month: ' . $now->get(Zend_Date::MONTH);
echo '<br/>now->year: ' . $now->get(Zend_Date::YEAR);
$end=new Zend_Date('2013-02-25 14:23:34', Zend_Date::ISO_8601);
echo '<br/>end: ' . $end->toString();
$end->setHour('23')->setMinute('59')->setSecond('59')->setDay($now->get(Zend_Date::DAY))->setMonth($now->get(Zend_Date::MONTH))->setYear($now->get(Zend_Date::YEAR));
echo '<br/>endAfterSetters: ' . $end->toString();
次の出力が生成されます。
now: 28-01-2013 14:04:28
now->day: 28
now->month: 01
now->year: 2013
end: 25-02-2013 14:23:34
endAfterSetters: 28-01-2013 23:59:59
ただし、システムクロックを2013年1月29日に変更すると、出力は予想とは異なります。
now: 29-01-2013 14:07:22
now->day: 29
now->month: 01
now->year: 2013
end: 25-02-2013 14:23:34
endAfterSetters: 01-01-2013 23:59:59
最後の出力は01-01-201323:59:59ですが、29-01 -2013 23:59:59である必要があります!
これは、PHP 5.3.2および5.3.16、Zend_Framework 10.7、最新のZend_Date24880バージョンで発生します。
過去にはすべてがうまくいきました。
なぜそれが起こるのか考えはありますか?
PS:1月29、30、31日に使用しているときに、jqueryデータタイムプラグインの機能不全も発見しました...しかし、他の質問で説明します。