Ciao,
avrei un problema da porre.
Sto facendo delle prove per calcolare le ore lavorative.
Ho questo problema:
in locale funziona tutto bene, mentre qui nel sito mi vengono dei risultati inattesi.
in locale:
10 hrs 12 min 0 sec
7 hrs 14 min 0 sec
7 hrs 11 min 0 sec
nel sito:
364 days 10 hrs 12 min 0 sec
7 hrs 14 min 0 sec
7 hrs 11 min 0 sec
ho fatto un controllo della versione PHP ed ho notato che in locale ho la PHP Version 5.2.6 mentre nel sito ho la PHP 4.4.9 - Optimized for AlterVista.
C'è un modo per adattare lo script che posto qui sotto per adattarlo alla versione PHP che ho qui in Altervista o, in alternativa, c'è la possibilità di usare qui nel sito una versione più aggiornata del PHP?
Grazie per l'attenzione.
____________________________________________
Questo il codice in questione:
Codice PHP:
<?php
function date_diff($start, $end="NOW") {
$sdate = strtotime($start);
$edate = strtotime($end);
$time = $edate - $sdate;
if($time>=0 && $time<=59) {
// Seconds
$timeshift = $time.' seconds ';
} elseif($time>=60 && $time<=3599) {
// Minutes + Seconds
$pmin = ($edate - $sdate) / 60;
$premin = explode('.', $pmin);
$presec = $pmin-$premin[0];
$sec = $presec*60;
$timeshift = $premin[0].' min '.round($sec,0).' sec ';
} elseif($time>=3600 && $time<=86399) {
// Hours + Minutes
$phour = ($edate - $sdate) / 3600;
$prehour = explode('.',$phour);
$premin = $phour-$prehour[0];
$min = explode('.',$premin*60);
$presec = '0.'.$min[1];
$sec = $presec*60;
$timeshift = $prehour[0].' hrs '.$min[0].' min '.round($sec,0).' sec ';
} elseif($time>=86400) {
// Days + Hours + Minutes
$pday = ($edate - $sdate) / 86400;
$preday = explode('.',$pday);
$phour = $pday-$preday[0];
$prehour = explode('.',$phour*24);
$premin = ($phour*24)-$prehour[0];
$min = explode('.',$premin*60);
$presec = '0.'.$min[1];
$sec = $presec*60;
$timeshift = $preday[0].' days '.$prehour[0].' hrs '.$min[0].' min '.round($sec,0).' sec ';
}
return $timeshift;
}
$start_date_1 = "01-08-2010 20:58";
$end_date_1 = "02-08-2010 07:10";
$start_date_2 = "02-08-2010 06:57";
$end_date_2 = "02-08-2010 14:11";
$start_date_3 = "02-08-2010 13:57";
$end_date_3 = "02-08-2010 21:08";
echo date_diff($start_date_1, $end_date_1) . "<br />\n";
echo date_diff($start_date_2, $end_date_2) . "<br />\n";
echo date_diff($start_date_3, $end_date_3) . "<br />\n";
?>