我从getDate()
函数得到奇数输出。它应该返回一个没有时间部分的日期,但我得到时间部分。我错过了一些可以纠正这个问题的配置选项吗?
示例代码:
date_default_timezone_set('America/New_York');
$date = new Zend_Date(array(
'year' => 2010,
'month' => 3,
'day' => 29,
));
echo $date->getIso() . PHP_EOL;
echo $date->getDate()->getIso() . PHP_EOL;
输出:
2010-03-29T00:00:00-04:00
2010-03-29T23:00:00-04:00
答案 0 :(得分:1)
Zend Date的getDate
方法很容易被误解。除了与另一个getDate
输出进行比较之外,它的输出实际上不会被使用,而只是看两个日期与其日历日期的比较。将其视为“日历日期哈希函数”。
示例(好):这两个日期是否属于同一日历日期?
$date1->getDate()->equals($date2->getDate()); // works as expected
示例(不好):
echo $date1->getDate(); // is meaningless
echo $date1->getCalendarDateHash(); // just as this would be
$date1 = $date1->getDate(); // and don't store this meaningless value
如果您正在寻找它将时间部分设置为00:00:00,请查看其他地方。
答案 1 :(得分:0)
哼,试试这个:
echo $date->get(Zend_Date::DATE_FULL);
答案 2 :(得分:0)
答案 3 :(得分:0)
这不是我的问题的答案,但这是我的解决方法。我已将Zend_Date
类扩展如下:
class My_Date extends Zend_Date
{
public static function now($locale = null)
{
return new My_Date(time(), self::TIMESTAMP, $locale);
}
/**
* set to the first second of current day
*/
public function setDayStart()
{
return $this->setHour(0)->setMinute(0)->setSecond(0);
}
/**
* get the first second of current day
*/
public function getDayStart()
{
$clone = clone $this;
return $clone->setDayStart();
}
}