Datumsformate

Frage

Wie entwerfe ich meine Webseite, so dass unterschiedliche internationale Datumsformate dargestellt werden können?

Besucher einer Website aus verschiedenen Ländern können ein Datumsformat falsch verstehen. Das Format MM/TT/JJ ist für US-Amerikaner eindeutig. In Europa wird hauptsächlich das Format TT/MM/JJ verwendet. Japan verwendet JJ/MM/TT. Die Separatoren können Slashs, Striche oder Punkte sein.In manchen Ländern werden kleine Zahlen mit einer vorstehenden Null ergänzt, andere lassen diese weg. Angenommen ein gebürtiger Japaner liest eine im amerikanischen Englisch verfasste Webseite aus Deutschland die das Datum 03/04/02 enthält. Wie interpretiert er dieses Datum?

Antwort

Ihr erster Impuls ist vielleicht anzunehmen, dass das Problem bei der Übersetzung der Website in andere Sprachen gelöst wird - d.h. lass den Übersetzter das Problem lösen. Widerstehen Sie diesem Impuls. Wollen Sie wirklich zwei Kopien des Dokumentes für eine englische und eine amerikanische Version pflegen, die sich nur anhand des Datumsformates unterscheiden? Auf jeden Fall müssen Sie mit mehrsprachigen Lesern umgehen, wie dem im oben gezeigten Beispiel.

Sie haben hierzu drei Möglichkeiten, alle mit Vor- und Nachteilen:

  1. Ein ortsunabhängiges Format verwenden
  2. Offensichtliche Monats- und Jahresangaben
  3. Den HTTP Accept-Language-Header verwenden

Option 1: Ein ortsunabhängiges Format verwenden

ISO 8601 spezifiziert das Format YYYY-MM-DD. 2003-04-02 ist eindeutiger als 03/04/02. (Manche modifizieren das ISO-Format und verwenden ein Kürzel für den Monat, um ihn von der Tagesangabe zu trennen. Z.B. 2003-Apr-02, jedoch ist dies nun nicht mehr ortsunabhängig.)

Pro:

Contra:

Option 2: Offensichtliche Monats- und Jahresangaben

Hierzu verwenden Sie einen Namen für den Monat (abgekürzt oder vollständig) und eine vierstellige Zahl für alle Jahresangaben des gregorianischen Kalenders. Zum Beispiel: 2. April 2003.

Pro:

Contra:

Option 3: Den HTTP Accept-Language-Header verwenden

Der HTTP Accept-Language-Header bestimmt nur die Spracheinstellungen des Benutzers, wird aber ebenfalls gewöhnlich für die Ortsangabe verwendet.

Die Methode funktioniert gut bei dynamisch generierten Web-Dokumenten, wenn auf einer Seite ein Datum aus einer im Hintergrund gelagerten Datensammlung eingefügt werden soll, sofern die Erwartungen eines Benutzers an ein Datumsformat klar sind. Ausschlaggebend ist eher der sprachliche Kontext als nur die Einstellungen des Browsers. Zum Beispiel:

Wie dies umgesetzt wird, ist unterschiedlich und abhängig von Ihrer Entwicklungsumgebung. Hier sind einige Hinweise für die gängigsten Umgebungen.

Java/JSP

Rufen Sie die Methode getLocale des ServletRequest oder des HttpServletRequest Objekts auf. Verwenden Sie das erhaltene Locale Objekt, um DateFormat aufzurufen. Beachten Sie, dass das SHORT Format nur Zahlen verwendet. Wenn Sie eindeutige Formate wünschen, verwenden Sie FULL. In einigen Ländern ist selbst LONG numerisch.

Beachten Sie auch ICU4J seit es mehr up to date Daten (und mehr Funktionalität) als die JDK-Programme enthält.

ASP

Verwenden Sie Request.ServerVariables('HTTP_ACCEPT_LANGUAGE'), um die Benutzer-Einstellungen zu erhalten. Ermitteln Sie die erste Angabe von der Liste der akzeptierten Länder. Sie müssen ein eigenes Mapping von der Ortsangabe in Buchstaben zu einem nummerischen Bezeichner durchführen. Setzen Sie Session.LCID auf den resultierenden Wert. Rufen Sie FormatDateTime zur Formatierung des Datums auf.

Verwenden Sie vbLongDate, um Mehrdeutigkeit zu vermeiden.

Perl

Verwenden Sie $ENV{'HTTP_ACCEPT_LANGUAGE'}, um die bevorzugte Sprache zu erhalten und POSIX:strftime zur Formatierung der Datumswerte. Sie müssen ein eigenes Mapping von den Sprachwerten zu dem Formatierungsstring durchführen.

Zusammenfassung

Es gibt keine ideale Lösung für die Problematik. Wägen Sie die Möglichkeiten ab und entscheiden Sie gemäß Ihren Prioritäten und Ihrer Sachlage.

Ist aus der Sicht des Benutzers eine Doppeldeutigkeit möglich, ist es üblich Namen für den Monat und vierstellige Jahreszahlen für Daten des gregorianischen Kalenders anzugeben oder zumindest auf der Seite anzugeben, wie die Daten zu interpretieren sind.

Datumsangaben können durch dynamische Technologien, zur Anpassung an den sprachlichen Kontext der Seite, neu formatiert werden.

Übrigens

Manche haben den Entwurf eines <date>-Tags empfohlen, das die Datumsangaben anhand der Ortsangaben des Benutzers darstellen würde. Dies neigt zur gleichen Problematik, wie sie das Beispiel des Japaners für die dynamische Generierung des Datums beschreibt. Das angemessene Format ist öfters abhängig vom sprachlichen Kontext der Seite, als von der Plattform des Benutzers.