Я хочу, чтобы вычислить разницу во времени между двумя объектами 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 00: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?!
Я бегу MAMP с php 5.3, Zend_Framework 1.10. Что не так с этим? ISO_8601 используется для данных MySQL «» даты и времени, и я не wanto, чтобы изменить() указываете ей ...
Что возвращает $ dif-> getIso()? – ccKep
ваш код работает идеально для меня .. я использую zf 1.11 php5.3 и zend community server .. может быть какая-то настройка по умолчанию вашего маска мешает вашему результату ... – Jaimin
@ccKep - $ dif-> getIso() возвращает '1970-01-02T00: 58: 58 + 01: 00' –