if(version_compare(PHP_VERSION, '5.3.0') >= 0){
$diff = $eStart->diff($eEnd);
$durYear = $diff->format('%y');
$durMonth = $diff->format('%m');
$durDay = $diff->format('%d');
$durHour = $diff->format('%h');
$durMin = $diff->format('%i');
$durSec = $diff->format('%s');
} else {
$diff = (object)$mxcal->datediff($mxc->get('startdate'),$mxc->get('enddate'),true);
$durYear = $diff->years;
$durMonth = $diff->months;
$durDay = $diff->days;
$durHour = $diff->hours;
$durMin = $diff->minutes;
$durSec = $diff->seconds;
}
//-- return event duration values
$mxcArray['durYear'] = !empty($durYear) ? $durYear : null;
$mxcArray['durMonth'] = !empty($durMonth) ? $durMonth : null;
$mxcArray['durDay'] = !empty($durDay) ? $durDay : null;
$mxcArray['durHour'] = !empty($durHour) ? $durHour : null;
$mxcArray['durMin'] = !empty($durMin) ? $durMin : null;
$mxcArray['durSec'] = !empty($durSec) ? $durSec : null;
$mxcArray['mxcmodalClass'] = ($modalView && $ajaxResourceId || isset($_REQUEST['imajax']) ? 'mxcmodal' : '');
// Add date for each day in a multiple day event ( #127 )
if($mxcArray['durDay'] !== null && $mxcArray['durDay'] >= 1){
if($debug) echo 'Multiple Day Event: '.$mxcArray['title'].'<br />';
for($i = 1; $i<=$mxcArray['durDay']; $i++){
$theSpanDate = strtotime('+'.$i.' day', $mxcArray['startdate']);
$arrEventDates[$mxcArray['id'].'_'.$i] = array('date'=>$theSpanDate, 'eventId'=>$mxcArray['id'],'repeatId'=>null);
if($debug) echo ' ++(0) '.strftime($dateFormat.' '.$timeFormat, $theSpanDate).'<br>';
}
}This question has been answered by mandledesign. See the first response.
It appears that they "days" property that is populated by \DateTime::diff does not contain a float for the differences in time.
It is rounded down to the nearest whole day.
$d1 = new \DateTime("2013-07-31 10:29:00");
$d2 = new \DateTime("2013-08-02 5:32:12");
echo $d1->diff($d2)->days;
Output: 1
$eStart = new DateTime(date('Y-m-d H:i:s',$mxc->get('startdate')));
$eEnd = new DateTime(date('Y-m-d H:i:s',$mxc->get('enddate')));
$eStart2 = new DateTime(date('Y-m-d',$mxc->get('startdate')));
$eEnd2 = new DateTime(date('Y-m-d',$mxc->get('enddate')));
$durYear; $durMonth; $durDay; $durHour; $durMin; $durSec;
if(version_compare(PHP_VERSION, '5.3.0') >= 0){
$diff = $eStart->diff($eEnd);
$diff2 = $eStart2->diff($eEnd2);
$durYear = $diff->format('%y');
$durMonth = $diff->format('%m');
$durDay = $diff2->format('%d');
$durHour = $diff->format('%h');
$durMin = $diff->format('%i');
$durSec = $diff->format('%s');
} else {
$diff = (object)$mxcal->datediff($mxc->get('startdate'),$mxc->get('enddate'),true);
$durYear = $diff->years;
$durMonth = $diff->months;
$durDay = $diff->days;
$durHour = $diff->hours;
$durMin = $diff->minutes;
$durSec = $diff->seconds;
}