我想计算两个Zend_Date的运算对象之间的时间差(倒计时计算器):Zend_Date的运算::子()和ISO_8601计算小时的时差错误
$now = new Zend_Date($now_datetime, Zend_Date::ISO_8601);
$end= new Zend_Date($end_datetime, Zend_Date::ISO_8601);
echo $now->getIso();
echo $end->getIso();
$expires=array();
$expires['expired']=false;
if($end->isEarlier($now)){
$expires['expired']=true;
return $expires;
}
$dif=$end->sub($now);
$expires['days']=($dif->getDay()->toValue()/(60*60*24));
$expires['hours']=($dif->getHour()->toValue()/(60*60));
$expires['minutes'] = $dif->getMinute()->toValue()/60;
$expires['seconds'] = $dif->getSecond()->toValue();
var_dump($expires);
为$ now_datetime =” 2012-06-30 01 :01:01 '和$ end_datetime =' 2012-06-30 23:59:59”,结果是
2012-06-30T01:01:01+02:00
2012-06-30T23:59:59+02:00
//array
'expired' => boolean false
'days' => int 0
'hours' => int 22
'minutes' => int 58
'seconds' => int 58
,这是确定。
但是对于$ now_datetime = '2012-06-30 0时01分01秒 '和$ end_datetime =' 2012-06-30 23:59:59',结果是
2012-06-30T00:01:01+02:00
2012-06-30T23:59:59+02:00
//array
'expired' => boolean false
'days' => int 1
'hours' => int -1
'minutes' => int 58
'seconds' => int 58
这是不正确的。我预计'小时'是,而不是-1?!
我使用php 5.3运行MAMP,Zend_Framework 1.10。 那有什么问题? ISO_8601用于MySQL的日期时间“的数据,我不wanto更改为mktime()...
$ dif-> getIso()返回什么? – ccKep
你的代码对我来说是完美的..我使用zf 1.11 php5.3和zend社区服务器..可能是你的mamp的一些默认设置正在妨碍你的结果... – Jaimin
@ccKep - $ dif-> getIso()返回'1970-01-02T00:58:58 + 01:00' –