PHP: Tageszahl zwischen zwei Daten

5 September 2009 in Code Snippets, PHP Kommentieren »

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

?>

Einen Kommentar hinterlassen