Differenz aus zwei Zeiten mit PHP berechnen

Das Problem

Für ein aktuelles Projekte musste ich die Differenz aus zwei Zeiten berechnen, dass heißt: der User gibt zwei Zeiten ein zuerst die Anfangszeit danach die Endzeit, bei meiner Anwendung habe ich dafür jeweils 4 Eingabefelder gemacht. Der Grund dafür ist, das meine Anwendung auch mobil nutzbar sein sollte und mobil ist der Doppelpunkt nicht so leicht erreichbar. 🙂 Das folgende Codebeispiel ist jedoch für zwei Felder (Anfangs- und Endzeit) ausgerichtet, es lässt sich jedoch mit wenig Aufwand so umschreiben das 4 Eingabefelder unterstützt werden.

Die Lösung

Ich dafür eine kleine Funktion gefunden und diese etwas vereinfacht. Der Forumtherad von php.de hat mir dabei sehr geholfen.

Zuerst werden die Start- und Endzeit, die mit Doppelpunkt eingebeben werden mit der PHP Funktion explode() in Minuten und Stunden aufgeteilt.
Nun muss das ganze in den Timestap umgewandelt werden, damit PHP damit rechnen kann, dies geschieht mit der Funktion mktime(), die noch diverse andere Parameter benötigt.
Dann werden beide Werte ganz normal subtrahiert und mit dem Befehl gmdate() in die aktuelle Zeitzone und in das korrekte Format konvertiert.

Code

function get_time_difference($start_time_o, $end_time_o){
    $start_time = explode(":", $start_time_o);
    $end_time = explode(":", $end_time_o);
    
    $start_time_stamp = mktime($start_time[0], $start_time[1], 0, 0, 0, 0);
    $end_time_stamp = mktime($end_time[0], $end_time[1], 0, 0, 0, 0);
    
    $time_difference = $end_time_stamp - $start_time_stamp;
    
    return gmdate("H:i", $time_difference);  
}

Benutzung

Um die nun definierte Funktion get_time_difference() zu benutzen muss diese Funktion nur mit den beiden Zeiten als Parameter gefüttert werden und das Ergebnis per echo ''; ausgegeben werden.

Ich hoffe die Funktion hilft euch weiter. Wie man merkt ist Zeitrechnung in PHP garnicht so schwer, es ist nur zu beachten, das jede Zeit in den Timestamp umgewandelt wird, damit PHP rechnen kann.
Somit lassen sich auch komplexere Aufgaben leicht meistern.

Artikelfoto von „Clock“ vom Earls37a (Flickr.com)

Ich bin Kevin, und schreibe hier über Themen die sich von CSS über Designs bis zur testgetriebenen Entwicklung mit PHP erstrecken. Ich arbeite in einer kleinen Firma als PHP-Entwickler und entwickle dort PHP Backends für verschiedene Projekte vorallem mit Laravel. Privat betreibe ich noch diesen Blog und notesafe.

4 Kommentare Schreibe einen Kommentar

Schreibe einen Kommentar zu Malte Antworten abbrechen