Tech 25. Apr. 2012

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.