Monthly Archives: März 2014


Deutsche Formatierung mit DateTime::format() und date() …

.. 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.

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.

 

 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.