Codice PHP:
<?php
function dateDiff($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){ 
        
$days $diff 86400;
    }
     
    if(
$diff 86400 0){
        
$rest = ($diff 86400);
        
$days = ($diff $rest) / 86400;
         
        if(
$rest 3600 ){
            
$rest1 = ($rest 3600);
            
$hours = ($rest $rest1) / 3600;
             
            if( 
$rest1 60 ){
                
$rest2 = ($rest1 60);
                
$minutes = ($rest1 $rest2) / 60;
                
$seconds $rest2;
            }else{
                
$minutes $rest1 60;
            }
        }else{
            
$hours $rest 3600;
        }
    }
     
    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;
    }
     
    if(
is_array($difference)){
        return 
$difference;
    }else{
        return 
round($difference);
    }
     
}

$data1 strtotime("2007-03-02 12:30:00");
$data2 strtotime("2007-03-04 16:15:00");

echo 
'<pre>';
print_r(dateDiff($data1,$data2,'a'));
?>