我对 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 -2013 23:59:59,但应该是29-01 -2013 23:59:59 !
它发生在 PHP 5.3.2 和 5.3.16、Zend_Framework 10.7、最新的 Zend_Date 24880 版本上。
Everyting过去工作得很好。
任何想法为什么会发生?
PS:我在 1 月 29,30,31 日使用 jquery datatime plugin malfunciton 时也发现了它......但我会在其他问题中描述它。