Aus Timestamps die Tage, Stunden, Minuten und Sekunden auslesen

Papenburger

Erfahrenes Mitglied
Hallo,

ich habe zwei Daten, welche ich mit der Funktion strtotime() in ein Timestamp umwandle.

Die Daten sehen wie folgt aus:
1. Datum: 2007-05-24 15:08:46
2. Datum: 2007-11-05 14:11:45
Nun möchte ich mit hilfe einer Funktion auslesen können, wieviele Tage, Stunden, Minuten und Sekunden seit dem 1. Datum vergangen ist. Wie kann ich das mit einer einzigen Funktion realisieren.

Das ganze soll zum schluss in ein einziges Feld gepackt werden und etwas so aussehen:
Wer kann mir dabei helfen?


Mit freundlichen Grüßen
Daniel Meyer
 
1. Datum: 2007-05-24 15:08:46
2. Datum: 2007-11-05 14:11:45
Also sind das die Daten vor der Formatierung? Denn ein Timestamp ist ja nur eine Zahl.
Du kannst einfach den jüngsten Timestamp vom älteren abziehen, dann hast du die Differenz in Sekunden. Das muss dann mittels einer Funktion in Monate, Tage, Stunden usw. geteilt werden. Ich muss mal in Ruhe schauen ob es dafür auch eine Funktion gibt, vielleicht findest du sie auch.
 
Falls die Daten aus einer MySQL Datenbank kommen, solltest du sie direkt dort voneinander abziehen und dir wie du es wünschst formatiert ausgeben.
 
Die Daten kommen aus der Datenbank aber ich kann und darf an der Datenbank nichts ändern, da mittlerweile ein zu großes Script daran angebunden wurde und wenn ich etwas hinzufüge bzw. ändere funktioniert das Script nicht mehr.
 
Ich sprach ja auch nur vom auslesen.... so in etwa:

SQL:
SELECT TIMEDIFF(`end`,`start`) as differenz FROM table
oder wenn du lieber mit den UTS arbeitest:

SQL:
SELECT UNIX_TIMESTAMP(`end`)-UNIX_TIMESTAMP(`start`) as differenz FROM table
 
Zuletzt bearbeitet von einem Moderator:
Hallo liebe Foris, dazu hätte ich auch noch zwei Fragen: wie muss ich genau diesen Befehl mit timediff in meine PHP-Datei schreiben (z.B. $sql = SELECT TIMEDIFF(`end`,`start`) AS differenz FROM TABLE) ? Wie kann ich das Ergebnis zur Weiterbearbeitung bereit machen (z.B. ausgeben oder in einer Datenbank speichern) ? Vielen Dank im Voraus.
 
Da die Daten im Timestampformat ja immer gleich formatiert sind kannst Du auch mit substr() die Blöcke auslesen und dann beliebig verwenden.

z.B. in einen Unix Timestamp umwandeln.
PHP:
function convertdate($timestamp)
{
	$jahr = substr($timestamp, 0, 4);
	$monat = substr($timestamp, 5, 2);
	$tag = substr($timestamp, 8, 2);
	$std = substr($timestamp, 11, 2);
	$min = substr($timestamp, 14, 2);
	$sek = substr($timestamp, 17, 2);

	return mktime($std, $min, $sek, $monat, $tag, $jahr);
}

print convertdate('2007-05-24 15:08:46');
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück