Bei der Ermittlung der Tageszahl zwischen zwei Daten kann einem die kleinen Funktion gregoriantojd() sehr hilfreich sein. Diese wandelt ein Datum aus dem Gregorianischen Kalender (so wie wir ihn meist kennen) in ein Julianisches Datum um, welches ähnlich dem Timestamp ein Datum als Ganzzahl wiedergibt, jedoch nicht als Sekunden, sondern als Tage.
Die folgende Funktion erwartet zwei Daten als Parameter, wahlweise als Timestamp oder Datumsstring:
<?php
// Tageszahl zwischen zwei Daten ermitteln
function get_days_between($date1, $date2) {
// Timestamp erzeugen, falls nicht gegeben
if (!is_numeric($date1)) { $date1 = strtotime($date1); }
if (!is_numeric($date2)) { $date2 = strtotime($date2); }
// Daten in Julianisches Datum umwandeln
$date1 = gregoriantojd(date('m', $date1), date('j', $date1), date('Y', $date1));
$date2 = gregoriantojd(date('m', $date2), date('j', $date2), date('Y', $date2));
// Differenz ermitteln und zurückgeben
return ($date1 > $date2 ? $date1 - $date2 : $date2 - $date1);
}
?>
Ein Aufruf mit Timestamp könnte wie folgt aussehen:
<?php
// Beispielaufruf 1: Timestamp
$time1 = 1251756000; // 01.09.2009
$time2 = 1253829600; // 25.09.2009
echo 'Tagesdifferenz: ' . get_days_between($time1, $time2); // = 24
?>
Und mit einem normalen Datum in Textform:
<?php
// Beispielaufruf 2: Datumsstring
$time1 = '01.09.2009';
$time2 = '25.09.2009';
echo 'Tagesdifferenz: ' . get_days_between($time1, $time2); // = 24
?>