Tomorrow Comes Today   I’m not gonna wait for anything to happen

PHP: Für Menschen lesbare Zeiträume

Datumsanzeigen sind nicht einfach. Und Zeiträume auch nicht. Zumindest wenn man den Nutzern eine möglichst natürliche Schreibweise anbieten möchte, also nicht im "technischen" Format TT.MM.YYYY.

Schöner wären da doch Datums-Zeiträume wie z.B.:

  • Donnerstag, 26. April 2012
  • Mittwoch, 11. bis Donnerstag, 26. April 2012
  • Donnerstag, 26. April bis Mittwoch, 9. Mai 2012
  • Samstag, 29. Dezember 2012 bis Mittwoch, 2. Januar 2013

Hier eine Beispielfunktion in PHP, welche eine solche Ausgabe erzeugen kann:

function getFullwrittenDaterange($startdate, $enddate){
  if($startdate && $enddate){
    $c .= 'startdate && enddate';
    if($startdate == $enddate){
      $c = strftime ("%A, %e. %B %Y", $startdate);
    }else{
      if(date("Y",$startdate) == date("Y",$enddate)){
        if(date("m",$startdate) == date("m",$enddate)){
          $c = strftime ("%A, %e.", $startdate).' bis '.strftime ("%A, %e. %B %Y", $enddate);
        }else{
          $c = strftime ("%A, %e. %B", $startdate).' bis '.strftime ("%A, %e. %B %Y", $enddate);
        }
      }else{
        $c = strftime ("%A, %e. %B %Y", $startdate).' bis '.strftime ("%A, %e. %B %Y", $enddate);
      }
    }
  }elseif($startdate && !$enddate){
    $c = strftime ("%A, %e. %B %Y", $startdate);
  }else{
    $c = null;
  }
  return $c;
}

Zu beachten sind natürlich noch Locale Angaben (welche ggf. bereits vom CMS gesetzt wurden) und die Lokalisierung des Ausgabeformates.