2つのZend_Dateオブジェクト間の時間差を計算したい(カウントダウン計算機用):
$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-3001: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-3000: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
そしてそれはOKではありません。'時間'は-1ではなく23になると思いますか?!
私はPHP5.3、Zend_Framework1.10でMAMPを実行しています。何が問題なのですか?ISO_8601はMySQLの「datetime」データに使用されます。mktime()に変更したくありません。