.. geht leider nicht. Das PHP DateTime-Objekt kann den gespeicherten Zeitpunkt mit der Funktion format() formatiert ausgeben. Leider kommen hier textuelle Monats- und Tagesangaben nur in englischer Sprache heraus. Eine mögliche Lösung für dieses Problem möchte ich Euch hier vorstellen.
Um deutsche Tages- und Monatsnamen beim Formatieren von Zeitangaben auszugeben, kann man strftime() in Verbindung mit setlocale() verwenden.
Zuerst setzt man die verwendete Sprache für den aktuellen Durchlauf. Das macht man am besten an einem Einstiegspunkt, vor dem Aufruf von anderem Code.
1 2 3 4 |
//setze die Sprache für Zeitangaben auf deutsch setlocale(LC_TIME, 'de_DE@euro', 'de_DE', 'deu_deu', 'de', 'ge'); |
Mit dieser Zeile wird die verwendete Lokalisierung für Zeitangaben auf deutsch umgestellt. Die vielen Kürzel im Funktionsaufruf sind mögliche Einstellungswerte, die in den Umgebungsvariablen auftreten können.
Nun erhält man bei der Verwendung von strftime() deutsche Angaben für Wochentage und Monate.
1 2 3 4 5 6 7 |
//erstelle eine DateTime-Instanz mit dem aktuellen Zeitpunkt $oDate = new DateTime(); //Ausgabe - Beispielformat "So, 23. März 2014" echo strftime('%a, %d. %B %Y', $oDate->getTimestamp()); |
Nachtrag:
Wenn bei Verwendung von strftime() Zeichen nicht korrekt dargestellt werden, dann liegt das am verwendeten Zeichensatz. Speziell der März verursacht wegen dem Umlaut kryptische Ausgaben oder lässt andere Funktionen, wie z.B. htmlentities(), komplett versagen. Wegen der Verwendung von setlocale nimmt strftime an, dass es einen String mit Zeichensatz ISO-8859-1 liefern müsste. Mit utf8_encode() in UTF-8-Projekten oder iconv() für alle anderen Zeichensätze lässt sich das Problem schnell lösen.
1 2 3 4 5 6 7 |
//in UTF-8-Projekten utf8_encode(strftime('%a, %d. %B %Y')); //oder iconv mit dem entsprechenden Ziel-Zeichensatz iconv('iso-8859-1', 'utf-8', strftime('%a, %d. %B %Y')); |