Uhrzeit differenz ausrechnen

Hallo,
ich möchte eine Zeitspanne ausrechen.
Habe Zeit im Format: 12:18:53.291 (H:i:s.u)

und will herausfinden wieviel Zeit vergangen ist.

Beispiel:
PHP:
$zeit1 = "12:18:53.291";
$zeit2 = "12:15:56.367";

$zeitspanne = $zeit1 - $zeit2;

geht so etwas?

Vielen Dank im Voraus
 
PHP:
//H:i:s.u
$zeit1 = "12:18:53.291";
$zeit2 = "12:15:56.367";

//Beide Zeiten in DateTime Objekte parsen
$dt1 = DateTime::createFromFormat('H:i:s.u', $zeit1);
$dt2 = DateTime::createFromFormat('H:i:s.u', $zeit2);

//DateIntervall kennt keine Mikrosekunden.
//$diff = $t1->diff($t2);
//echo $diff->format('%H:%i:%s.%u');
//Ergo rechnen wir über den Timestamp. 

//Timestamp von Sekunden ermitteln (mit den Mikrosekunden als Nachkommastellen
//Ausgabe: 1358939933.291000
$tS1 = $dt1->format('U.u');
$tS2 = $dt2->format('U.u');
//Differenz in Sekunden ermitteln
$diffS = bcsub($tS1, $tS2, 6);
//Aus dem Resultat wieder ein DateTime erstellen
$d = DateTime::createFromFormat('U.u', $diffS);
//und formatiert ausgeben
echo $d->format('H:i:s.u');
Ausgabe:
Code:
00:02:56.924000
 
Vielen Dank für die Antwort.

Bei mir kommt der Fehler:

Code:
Fatal error: Call to a member function format() on a non-object in C:\xampplite\htdocs\app\test.php   on line 48
Das ist an dieser Stelle:
PHP:
//und formatiert ausgeben
echo $d->format('H:i:s.u');

Kanst du mir dabei helfen?

Da bei mir das Formatieren der zeit nich funktioniert habe ich das skript umgeschrieben:

PHP:
//H:i:s.u
$zeit1 = "12:18:53.291";
$zeit2 = "12:15:56.367";

 
//Beide Zeiten in DateTime Objekte parsen
$dt1 = DateTime::createFromFormat('H:i:s.u', $zeit1);
$dt2 = DateTime::createFromFormat('H:i:s.u', $zeit2);
 
//DateIntervall kennt keine Mikrosekunden.
//$diff = $t1->diff($t2);
//echo $diff->format('%H:%i:%s.%u');
//Ergo rechnen wir über den Timestamp. 
 
//Timestamp von Sekunden ermitteln (mit den Mikrosekunden als Nachkommastellen
//Ausgabe: 1358939933.291000
$tS1 = $dt1->format('U.u');
$tS2 = $dt2->format('U.u');


//Differenz in Sekunden ermitteln

 $diffS = bcsub($tS1, $tS2, 6) ; 
 // Da hier die Differenz in Sekunden.Millisekunden ausgegeben wird, trenne ich die beiden einfach und rechne die Sekunden in Munuten Stunden usw. um.

$sek = explode(".",$diffS);

echo $sek= sec_to_time($sek[0]);  // Funktion sec to time wird unten beschrieben



 echo " und ". $msek = substr($sek[1],0,3) ." Millisekunden gebraucht";


Und hier die Funktion:

PHP:
function sec_to_time($sekunden) {
     if (!($sekunden >= 60)) {
         return $sekunden . ' Sekunden';
     }
 
    $minuten    = bcdiv($sekunden, '60', 0);
     $sekunden   = bcmod($sekunden, '60');
 
    if (!($minuten >= 60)) {
         return $minuten . ' Minuten ' . $sekunden . ' Sekunden';
     }
 
    $stunden    = bcdiv($minuten, '60', 0);
     $minuten    = bcmod($minuten, '60');
 
    if (!($stunden >= 24)) {
         return $stunden . ' Stunden ' . $minuten . ' Minuten ' . $sekunden . ' Sekunden';
     }
 
    $tage       = bcdiv($stunden, '24', 0);
     $stunden    = bcmod($stunden, '24');
 
    return $tage . ' Tage ' . $stunden . ' Stunden ' . $minuten . ' Minuten ' . $sekunden . ' Sekunden';
 }
 
Ist komisch, 'DateTime::createFromFormat()' funktioniert. Aber die Zeile
$d = DateTime::createFromFormat('U.u', $diffS);
scheint nicht zu gehen.
 
Zurück