mi auto rispondo... sono riuscito a trovare qualkosa grazie al mitico google... riporto il codice in caso serva a qualcun altro
Codice PHP:
<?php
/**
* La funzione calcola la differenza tra due date
* in formato UNIX TimeStamp
* restituendo in output i giorni, le ore, i minuti e i secondi
* di differenza (di default, restituisce i giorni)
*/
function fDateDiff($dateFrom, $dateTo, $unit = 'd')
{
$difference = null;
$date1 = $dateFrom;
$date2 = $dateTo;
if( $date1 > $date2 ){
return null;
}
$diff = $date2 - $date1;
$days = 0;
$hours = 0;
$minutes = 0;
$seconds = 0;
if ($diff % 86400 <= 0){ // Ci sono 86400 secondi in un giorno
$days = $diff / 86400;
}
if($diff % 86400 > 0){
$rest = ($diff % 86400);
$days = ($diff - $rest) / 86400;
if($rest % 3600 > 0 ){
$rest1 = ($rest % 3600);
$hours = ($rest - $rest1) / 3600;
if( $rest1 % 60 > 0 ){
$rest2 = ($rest1 % 60);
$minutes = ($rest1 - $rest2) / 60;
$seconds = $rest2;
}else{
$minutes = $rest1 / 60;
}
}else{
$hours = $rest / 3600;
}
}
//In quel unità restituire
//la differenza ?
switch(strtolower($unit)){
case 'd':
$partialDays = 0;
$partialDays += ($seconds / 86400);
$partialDays += ($minutes / 1440);
$partialDays += ($hours / 24);
$difference = $days + $partialDays;
break;
case 'h':
$partialHours = 0;
$partialHours += ($seconds / 3600);
$partialHours += ($minutes / 60);
$difference = $hours + ($days * 24) + $partialHours;
break;
case 'm':
$partialMinutes = 0;
$partialMinutes += ($seconds / 60);
$difference = $minutes + ($days * 1440) + ($hours * 60) + $partialMinutes;
break;
case 's':
$difference = $seconds + ($days * 86400) + ($hours * 3600) + ($minutes * 60);
break;
case 'a':
$difference = array (
"days" => $days,
"hours" => $hours,
"minutes" => $minutes,
"seconds" => $seconds
);
break;
}
//Ritorno la differenza
if(is_array($difference)){
return $difference;
}else{
return round($difference);
}
}
//FONTE: [url]http://www.masterdrive.it/showthread.php?t=9824[/url]
?>