Su alcuni server il timestamp non parte dal "1970-01-01 00:00:00", ma dal "1970-01-01 01:00:00". Per questo motivo convertendo la durata in una data risulta un ora in più.
Codice PHP:
var_dump(date("Y-m-d H:i:s", 0)); // probabilmente vedrai "1970-01-01 01:00:00"
Io ti consiglierei una soluzione alternativa
Codice PHP:
$data_fine_en = new DateTime('2012-04-29 22:41:16');
$data_inizio_en = new DateTime('2012-04-29 22:28:17');
$durata = $data_fine_en->diff($data_inizio_en);
echo $durata->format('%H:%i:%s');