Gibt es ein universelles Datumsformat, das jeder auf der Welt verstehen kann?

10

In Kanada ist jeder mit dem Datumsformat vertraut YYYY-MM-DD. In Europa oder Südafrika bevorzugen sie DD-MM-YYYY. Es gibt Benutzer aus Südafrika, die mit dem YYYY-MM-DDDatumsformat verwechselt werden. Gibt es eine Möglichkeit, mit dieser Situation umzugehen?

Ich dachte daran, das folgende Methodenformat für alle zu verwenden: Feb 02, 2011

Thierry Lam
quelle
21
Ich denke, dass das JJJJ-MM-TT-Format auch ein ISO-Standard ist.
FrustratedWithFormsDesigner
2
"In Europa oder Südafrika bevorzugen sie DD-MM-YYYY." Außer zB in Ungarn ( YYYY.MM.DD) oder Finnland ( DD.MM.YYYY) oder ... Entschuldigung, die Realität ist chaotisch :-(
Péter Török
6
Was ist mit verschiedenen Kalendern?
4
Bei der Erfassung von Radardaten (in Nordamerika) haben wir diese für Dateinamen verwendet : prefix_1999_12_23_16_45_53.ext. Hauptgrund: Das war verdammt einfach zu sortieren, zu suchen und zu analysieren. Bei der Suche möchten Sie wirklich zuerst mit der wichtigsten Einheit beginnen, um das Ziel so schnell wie möglich zu erreichen. Diese Art von Zeichenfolge ist sogar binärbaumfreundlich. Das Labor wurde von Studenten aus Europa dominiert, aber ich denke, dies war nur gesunder Menschenverstand, wenn nicht ein wissenschaftlicher Standard. In einem Land, in dem ich aufgewachsen bin, haben wir jedoch TT-MM-JJJJ für den täglichen Gebrauch verwendet. Begründung: Wenn Sie aufwachen, was ist der erste Teil, den Sie wissen möchten?
Job
2
@Frustrated, ich denke sein Punkt ist, dass es Kalender mit einem anderen Startjahr gibt (wie würde ein Muslim zB 30.12.1268 interpretieren?) Oder Mondmonate (von denen es ca. 13 pro Jahr gibt) usw. Also wirklich Universal ist mehr als nur zu vereinbaren, welche Zahl der Tag und welche der Monat ist ...
Péter Török

Antworten:

15

Der mehrdeutige Teil besteht darin, Tag und Monat zu unterscheiden, wenn sie durch Zahlen dargestellt werden.

Bedeutet 02/03 Februar 03 oder März 02?

Indem Sie die Monatskennung von ihrer Nummer mit ihrem Namen ändern , entfernen Sie diese Mehrdeutigkeit. Um Ihre Frage zu beantworten, Feb 02, 2011scheint Ihre Variante eine gute Lösung zu sein.

Es gibt immer noch ein potenzielles Problem mit der Jahreszahl, wenn Sie sie nur mit zwei Ziffern schreiben, aber dann ist es einfach zu beheben (verwenden Sie 4).


quelle
10
Und dann können Sie einfach eine Übersetzungsdatei für Monatsnamen in verschiedenen Sprachen haben.
FrustratedWithFormsDesigner
1
@FrustratedWithFormsDesigner Und vergessen Sie nicht, eine professionelle Übersetzung der richtigen (bekannten) Abkürzungen zu erhalten.
Nicole
Was ist mit den Sprachen, die die Monate nicht benennen?
NUR MEINE RICHTIGE MEINUNG
19

Nein, es gibt kein allgemein anerkanntes Datumsformat.

ISO 8601 Definiert einen internationalen Standard für Datumsformate. Als solches ist es wahrscheinlich der beste Kompromiss. Aber wie Sie sagen, mögen Benutzer dieses Format nicht immer.

Die einzig richtige Lösung besteht darin, ein anderes Format für verschiedene Länder zu präsentieren. Möglicherweise gibt es eine Standardbibliothek, um dies zu erreichen, wenn Ihre gewählte Programmiersprache eine bedeutende Anhängerschaft hat.

Kramii
quelle
2
Das ist toll. Normalerweise verwende ich JJJJMMTT für Protokolldateien usw. Jetzt kann ich sagen, dass ich nur ISO-8601-konform bin!
Mark Harrison
1
Wenn ich ISO 8601 verwende, ist es normalerweise am besten, die gesamte Explizität zu formatieren, dh 1999-12-25T00: 00: 00.000Z . Ja, es sieht für den Durchschnittsmenschen wie Kauderwelsch aus, aber es gibt keine Chance auf Mehrdeutigkeit.
MattDavey
2
"Die einzig richtige Lösung besteht darin, ein anderes Format für verschiedene Länder zu präsentieren." - und wie genau sollte ich ein Datum auf einem Packzettel ausdrucken, das überall auf der Welt versendet werden könnte?
Scott Whitlock
@ScottWhitlock: Leider gibt es keine allgemein akzeptierte Lösung für dieses Problem. Wenn Sie beim Drucken des Datums nicht wissen, wohin ein Paket gesendet wird, ist ISO 8601 möglicherweise die beste Wahl.
Kramii
"Die einzig richtige Lösung besteht darin, ein anderes Format für verschiedene Länder zu präsentieren." Ich würde sagen, das ist nicht richtig. Es kommt heute einfach so vor, dass einige Bibliotheken, die eine hilfreiche Vorstellung von meinem bevorzugten Datumsformat hatten - basierend auf meiner bevorzugten Sprache - Verwirrung verursachten. Aber als ersten Schritt, da wir momentan nicht alle Kulturen reparieren können, verwenden Sie entweder ISO 8601 oder Text für Monate oder so.
Erik I
9

Sie sollten dafür die Kulturinformationen verwenden. Oder zumindest das lokale Anzeigeformat.

In JavaScript können Sie die toLocaleString-Methode für die Date-Klasse verwenden .

Für C # können Sie die Formatzeichenfolge verwenden, wenn Sie ToString verwenden .

Eine schnelle Google-Suche sollte Ihnen zeigen, wie Sie die Kultur in der Sprache Ihrer Wahl verwenden können.

Tyanna
quelle
5

Ich würde mit JJJJ-MM-TT gehen (und immer vierstellige Jahre und zweistellige Monate und Tage ausschreiben). JJJJ-TT-MM ist meines Wissens ungewöhnlich bis selten, daher ist das Format JJJJ-MM-TT das Format mit der geringsten Mehrdeutigkeit, und Ihre Benutzer werden es schließlich verstehen. Außerdem erhalten Sie den Vorteil der einfachen Sortierung.

jprete
quelle
2

Können Sie jedem Benutzer sein eigenes Gebietsschema geben, das dann Daten und andere Informationen gemäß seinen lokalen Vorlieben wiedergibt?


quelle
1

Oft können Sie das Gebietsschema konfigurieren und I18n in den meisten Frameworks verwenden.

Chiurox
quelle
0

Im Allgemeinen müssen Sie sowohl das Format als auch den Wert angeben. Dies ist der einzige Weg, um jegliche Verwirrung zu vermeiden. Sie können beispielsweise "2011-02-02 (JJJJ-MM-TT)" sagen. Dies geht jedoch zu Lasten der Einfachheit und Lesbarkeit. Kennen Sie also Ihr Publikum.

Sie können natürlich sagen: "Im Folgenden haben alle Daten das Format JJJJ-MM-TT ...." Dann ist "2011-02-02", das später erscheint, eindeutig. Das kann schmackhafter sein, aber kennen Sie auch hier Ihr Publikum.

Yfeldblum
quelle
Richtig, außer dass am estnischen Tag = päev und Monat = kuu in Filippino: araw und buwan, auf Finnisch: päivä, kuukausi, auf Ungarisch: nap, hónap, auf Indonesisch: hari, bulan, auf Malteese: jum, xahar , auf Rumänisch: zi, lună, auf Türkisch: gün, ay, auf Vietnamesisch: ngày, tháng ... ganz zu schweigen von vielen Sprachen, in denen entweder der Monat nicht mit m oder der Tag nicht mit d beginnt (Deutsch: Monat, Tag ) sowie Sprachen, die kein lateinisches Alphabet verwenden.
Job
1
Nun, "2011-02-02" ist auf jeden Fall eindeutig ...;)
Martin
0

Dieser Vorschlag ist wahrscheinlich nutzlos, aber ich habe Monate gesehen, die als römische Ziffern geschrieben wurden. Sicher, 3 / XI / 2011 ist vielleicht der 11. November oder der 3. März, aber ich denke, die erste Interpretation ist natürlicher.

ggambett
quelle
1
Römische Zahlen? "Natürlich?"
Wonko the Sane
@Wonko, "natürlich" in dem Sinne, dass XI in diesem Zusammenhang eher als Monat als als Tag interpretiert wird. Ich gebe zu, dass es extrem subjektiv ist.
Ggambett
+1, ich habe selbst so etwas gedacht. Dennoch stimme ich auch Ihren Kritikern zu.
Job
Nachdem ich dieses Format noch nie gesehen hatte, dachte ich zuerst an "Tippfehler" oder "Übersetzungsfehler", bevor mir "römische Ziffern" dämmerten. Nur dann würde ich versuchen, die Bedeutung zu erraten.
Wonko the Sane
Ganz zu schweigen davon, dass der 3. März 2011 als November interpretiert wird.
MSalters
0

Ich würde sagen, dass es davon abhängt, was Sie tun, wie viel Kontrolle Sie über die Eingabe haben und speichern Sie sie irgendwo?

Für die Lagerung würde ich verwenden, was von Mike Dunlavey vorgeschlagen wurde:

JJJJMMTTHHMMSS, wo die Stunde in UTC ist, ist der Weg, den ich gehe, wann immer ich eine Wahl habe, aus den von Ihnen angegebenen Gründen. Wenn ich keine Wahl habe, lasse ich den Benutzer wählen.

Er hat dies nicht als Antwort hinterlassen, also werde ich es tun.

Noch etwas: Sehen Sie sich den folgenden Screenshot an, in dem Sie erfahren, wie das CC-Ablaufdatum eingegeben wird: http://www.ubercart.org/files/credit_card_checkout.jpg

Das Tolle an diesem Beispiel ist, dass es Sie nicht zum Nachdenken bringt. Es werden sowohl Zahlen als auch Namen für den Monat verwendet. Ich würde in Betracht ziehen, etwas Ähnliches für die Eingabe zu verwenden. Geben Sie für den Monat sowohl die Nummer als auch den lokalisierten Namen an. Verwenden Sie für Jahr und Tag numerische Auf- / Ab- oder Kombinationsfelder. Dann scheint die Kalendersteuerung auch geschickt zu sein.

Wie gesagt, es kommt darauf an. Für die Speicherung: Wenn Sie eine Datenbank verwenden, prüfen Sie, ob diese bereits ein gutes eindeutiges Datenformat bietet. Wenn Sie eine andere Methode verwenden, prüfen Sie, ob "JJJJMMTTHHMMSS, bei der die Stunde in UTC steht" hilfreich ist. Um es dem Benutzer zu präsentieren, berücksichtigen Sie, welche Länder / Gebietsschemata möglicherweise beteiligt sein können, und wählen Sie dann die einfachste Art der Darstellung "Lassen Sie mich nicht nachdenken". Erwägen Sie auch die Bereitstellung einer Option.

Schauen Sie sich zum Schluss einige coole Produkte an, die bereits etwas Ähnliches tun, und versuchen Sie herauszufinden, wie sie es tun.

Job
quelle
ah Mist, als ich den Screenshot las, dachte ich, wir sprachen über den 11. November ... nur um zu erkennen, dass der Tag nicht notwendig war, wenn über das Ablaufdatum der Kreditkarte gesprochen wurde: /
Matthieu M.
@Matthieu M., ja, das ist ein bisschen irreführend :) Wenn Sie jedoch einen CC in der Hand halten und im Begriff sind, Daten einzugeben, hilft es vielleicht mehr als es schmerzt. Wenn es drei Kisten gäbe - eine für den Tag, wäre dies möglicherweise weniger mehrdeutig.
Job
0

Es gibt kein universelles Datums- und Uhrzeitformat für die Endbenutzer der Website. Es gibt auch keinen einzelnen Datums- / Uhrzeitwert, da der Wert je nach Zeitzone des Kunden unterschiedlich ist. Sie sollten die Globalisierung verwenden - das Targeting von Daten-, Zeit-, Währungs-, Kalender- und Nubmerformaten basierend auf der Benutzerkultur (kann aus akzeptierten Sprachen empfangen werden, die vom Browser des Benutzers übergeben werden, oder über einen direkt in Ihrer Anwendung implementierten Schalter). Einige APIs (z. B. .NET) unterstützen diese Funktionen direkt.

Verwenden Sie zum Speichern von Datum und Uhrzeit in der Datenbank das Universalformat - UTC (Koordinaten-Universalzeit).

Ladislav Mrnka
quelle
UTC ist nicht so universell: Wenn Sie
Schaltsekunden
-2

Es ist bedauerlich, dass die gesamte Intelligenz in der internationalen Computerwelt diese Nuss nicht knacken kann.

Weder Microsoft noch andere Anbieter haben in Betracht gezogen, eine Datumsmaske hinzuzufügen, die den Monat wie den Tag mit Null gefüllt erscheinen lässt, jedoch dreistellig. Die Übernahme der Praxis würde dazu beitragen, eine neue Reihe geänderter Datumsformate zu fördern, die mathematisch äquivalent sind und dennoch in einem der traditionellen Datumslayouts leicht zu identifizieren und zu unterscheiden sind. Das ist:

  • 0 MM-TT-JJJJ, z. B. 002-03-2016 für den 03. Februar 2016

  • TT-0MM-JJJJ, zB 03-002-2016 für 03-Feb-2016

  • JJJJ-0MM-TT, zB 2016-002-03 für 2016-02-03

  • JJJJ-TT-0MM, zB 2016-03-002 (wenn jemand es benutzen wollte!)

Scheint zu einfach, um es auf diese Weise zu beheben ... Ich denke, einfach verkauft sich einfach nicht gut.

FBTHFL
quelle
2
Ich kann nur sagen: xkcd.com/927 Wir haben bereits einen ISO-Standard für Datumsangaben und benötigen keinen weiteren.
Simon B