Ho provato ad usare questa funzione:
Codice PHP:
function differenza($ora1$ora2$sep){
    
$part explode($sep$ora1);
    
$arr explode($sep$ora2);
    
$diffmktime($arr[0], $arr[1], $arr[2]) - mktime($part[0], $part[1], $part[2]);
    
$ore=floor($diff / (60*60));  
    
$minuti=($diff 60) % 60;
    
$secondi = ($diff - ($minuti 60) - ($ore 60 *60));
    
$ore str_pad($ore,2,0,STR_PAD_LEFT);
    
$minuti str_pad($minuti,2,0,STR_PAD_LEFT);
    
$secondi str_pad($secondi,2,0,STR_PAD_LEFT);
    
$risultato $ore.":".$minuti.":".$secondi;
    return 
$risultato;

La funzione la richiamo in questa maniera:
Se ho le sole ore è tutto semplice:
Codice PHP:
$ora1="08:35";
$ora2="11:50";
$differenza=differenza($ora1,$ora2,":");
echo 
"Tempo tra le due date: " $differenza "
\n"

Altrimenti, e questo è il nostro caso, prima troviamo le 2 ore e poi andiamo alla funzione:
Codice PHP:
$data_fine_en =  '2012-04-29 22:41:16';
$data_inizio_en =  '2012-04-29 22:28:17';
$data_fine_timestamp strtotime($data_fine_en);
$data_inizio_timestamp strtotime($data_inizio_en);
$start date('H:i:s',$data_inizio_timestamp);
$end date('H:i:s',$data_fine_timestamp);
$differenza=differenza($start,$end,":");
echo 
"Tempo tra le due date: " $differenza "
\n"

Come separatore ho usato i due punti ( : ) perchè qui ed in molti casi vengono usati questi come separatori.