Hallo,

Kalenderberechnungen sind nicht immer einfach. Oft wünscht man sich ausführlichere Angaben, als die der vorhandenen PHP-Funktionen. Seit PHP 5.3 ist damit aber Schluss.

Die neue Klasse “DateTime” erlaubt es uns, Datenobjekte zu erstellen und schafft für Differenzberechnungen mit der neuen Methode diff($datum) endlich Abhilfe.

Um professionell mit Datums- und Zeitangaben zu rechnen, müssen wir nur noch die DateTime Objekte erzeugen und können uns gleich aufs Wesentliche konzentrieren.

Das erste Datum ist gegeben und das zweite Objekt soll das Aktuelle Datum enthalten, wozu wir einfach die altbekannte Funktion date($format) benutzen
Los gehts:

 

<?php 

//Wenn wir mit date() arbeiten, müssen wir eine TimeZone angeben
date_default_timezone_set("Europe/Berlin");

//Datentime Objekte erzeugen (Jahr-Monat-Tag)
$datum1 = new DateTime('2009-10-11'); //Geburtsdatum
$datum2 = new DateTime(date('Y')+'-'+date('m')+'-'+date('d')); //Aktuelles Datum

$interval = $datum2->diff($datum1);
//Das Ergebnis wird formatiert. %Y gibt die Jahre an (4stellig) %m die Monate und %d die Tage
//Wenn wir die Tage durch 7 teilen und abrunden, erhalten wir die Anzahl der Wochen
$wochen = floor($interval->format('%d') / 7);

//Die restlichen Tage, die nicht mehr eine ganze Woche bilden können (<7) sollen ebenfalls angezeigt werden
$tage = ($interval->format('%d') % 7);

//Output
echo $interval->format("%Y Jahre %m Monate $wochen Wochen $tage Tage");
?>

 

Die Klasse ist wirklich hilfreich, wenn man bedenkt, dass man vorher entweder alles in Timestamps und zurück rechnen musste oder komplexe Rechnungen mit den Monats-, Tages- und Jahresangaben durchführen musste.

Viel Spaß damit! 🙂

Bild: Thomas Max Müller (pixelio)