世界中の誰でも理解できる普遍的な日付形式はありますか?


10

カナダでは、誰もが日付形式に精通していますYYYY-MM-DD。ヨーロッパや南アフリカでは、彼らが好むDD-MM-YYYY。南アフリカから、YYYY-MM-DD日付の形式に戸惑うユーザーがいます。この状況に対処する方法はありますか?

私は次のメソッド形式をすべてに使用することを考えていました: Feb 02, 2011


21
YYYY-MM-DD形式もISO規格だと思います。
FrustratedWithFormsDesigner

2
「ヨーロッパや南アフリカでは、彼らが好むDD-MM-YYYY。」例えばハンガリー(中を除くYYYY.MM.DD)またはフィンランド(DD.MM.YYYY)、または...申し訳ありませんが、現実は散らかっている:-(
ペーテルTörök

6
異なるカレンダーはどうですか?

4
(北米で)レーダーデータを収集するときに、これをファイル名に使用しました:prefix_1999_12_23_16_45_53.ext。主な理由:これは並べ替え、検索、解析が非常に簡単でした。検索するときは、できるだけ早く目標を達成するために、最初に最も重要なユニットから始めたいと思います。この種の文字列は、バイナリツリーにも対応しています。研究室はヨーロッパからの学生によって支配されていましたが、これは科学的な基準ではないとしても、単なる常識だったと思います。しかし、私が育った国では、日常的にDD-MM-YYYYを使います。理由:起きたら、最初に知りたいことは何ですか?
仕事

2
@Frustrated、私は彼のポイントは、(ムスリムは例えば1268年12月30日?解釈する方法)異なる開始年とカレンダー、または月の月があることだと思います(約が存在するの。年間13)などがそうであることを本当にユニバーサル...もっとちょうどその数に合意する日で、これは月よりもある
ペーテルTörök

回答:


15

曖昧部分は、それらが数字で表さている場合、月から日を区別することです。

02/03は2月3日または3月2日を意味しますか?

月の識別子をその名前の番号から変更することで、あいまいさを解消できます。あなたの質問に答えるために、あなたのバリアントはFeb 02, 2011良い解決策のようです。

2桁のみで年を書いている場合でも、年の数字には潜在的な問題がありますが、修正は簡単です(4を使用)。


10
そして、月の名前を別の言語で翻訳したファイルを用意できます。
FrustratedWithFormsDesigner

1
@FrustratedWithFormsDesignerそして、正しい(よく知られている)略語への専門的な翻訳を取得することも忘れないでください。
ニコール

月の名前を付けない言語についてはどうですか?
私の正しい意見のみ

19

いいえ 。普遍的に認識されている日付形式はありません。

ISO 8601は、日付形式の国際標準を定義しています。そのため、おそらくこれが最善の妥協案です。しかし、あなたが言うように、ユーザーは常にこのフォーマットを好むわけではありません。

唯一の正しい解決策は、国ごとに異なるフォーマットを提示することです。選択したプログラミング言語に重要なファンがいる場合、これを実現するための標準ライブラリがあることに気付くでしょう。


2
これは素晴らしい。通常、ログファイルなどにはYYYYMMDDを使用します。これで、ISO-8601に準拠していると言えます。
Mark Harrison、

1
ISO 8601を使用する場合、通常は全体を明示的にフォーマットするのが最善です。つまり、1999-12-25T00:00:00.000Zです。ええ、それは平均的な人には意味不明なように見えますが、あいまいさの可能性はありません。
MattDavey

2
「唯一の正しい解決策は、国ごとに異なるフォーマットを提示することです。」-そして、正確には、世界中のどこにでも発送できる梱包票に日付を印刷する必要がありますか?
Scott Whitlock 2013年

@ScottWhitlock:残念ながら、この問題に対する一般的に受け入れられている解決策はありません。日付を印刷するときにパッケージの送信先がわからない場合は、ISO 8601が最適です。
クラミィ

「唯一の正しい解決策は、国ごとに異なるフォーマットを提示することです。」これは正しくないと思います。今日、たまたま起こったのは、いくつかのライブラリーが、私の好みの言語に基づいて、私の好みの日付形式を理解するのに役立ち、混乱を引き起こしたためです。しかし、現時点ではすべてのカルチャを修正することはできないため、最初のステップとして、ISO 8601またはテキストを数か月間使用します。
エリックI

9

そのためにカルチャー情報を使用する必要があります。または、少なくともローカルの表示形式。

JavaScriptでは、Dateクラスに toLocaleStringメソッドを使用できます。

C#の場合、ToStringを使用するときにフォーマット文字列を使用できます。

Googleをすばやく検索すると、選択した言語で文化を使用する方法が表示されます。


5

YYYY-MM-DDを使用します(常に4桁の年と2桁の月と日を書きます)。私の知る限り、YYYY-DD-MMはめったにありません。そのため、YYYY-MM-DD形式は、あいまいさが最も少ない形式であり、最終的にユーザーが理解するようになります。また、簡単なソートの利点も得られます。


2

各ユーザーに自分のロケールを与えることができます。ロケールは、ローカルの設定に従って日付やその他の情報をレンダリングしますか?


1

多くの場合、ほとんどのフレームワークでロケールを設定し、I18nを使用できます。


0

一般的なケースでは、フォーマットと値の両方を指定する必要があります。これは、ありとあらゆる混乱を避ける唯一の方法です。たとえば、「2011-02-02(YYYY-MM-DD)」と発声できます。ただし、シンプルさと読みやすさを犠牲にして提供されるため、読者を知っておいてください。

もちろん、「今後、すべての日付はYYYY-MM-DD ....の形式になります」と言うことができます。そうすると、後で表示される「2011-02-02」が明確になります。それはもっと口当たりが良いかもしれませんが、繰り返しますが、あなたの聴衆を知っています。


右、エストニア語の日=päevと月= kuuを除いて、フィリピン語では:arawとbuwan、フィンランド語:päivä、kuukausi、ハンガリー語:nap、hónap、インドネシア語:hari、bulan、マルタ語:jum、xahar 、ルーマニア語:zi、lună、トルコ語:gün、ay、ベトナム語:ngày、tháng...月がmで始まらない、または日がdで始まらない多くの言語は言うまでもありません(ドイツ語:Monat、Tag )ラテンアルファベットのようなものを使用しない言語と同様に。
仕事を

1
ええと、「2011-02-02」はいずれの場合も明確です...;)
マーティン

0

この提案はおそらく役に立たないでしょうが、ローマ数字で書かれた月を見てきました。確かに、2011年3月11日は11月11日か3月3日かもしれませんが、最初の解釈のほうが自然だと思います。


1
ローマ数字?"ナチュラル?"
Wonko the Sane

@Wonko、その意味ではXIは1日ではなく1か月として解釈される可能性が高いという意味で「自然」。私はそれが非常に主観的であることを認めます。
ggambett、2011

+1、私は自分でこのようなことを考えていました。しかし、私もあなたの批評家に同意します。
仕事

そのフォーマットを見たことがないので、「ローマ数字」を思いつく前に、まず「タイプミス」または「翻訳エラー」を考えました。そうして初めて意味を推測しようとするでしょう。
Wonko the Sane

2011年3月2日が11月と解釈されることは言うまでもありません。
MSalters

0

それはあなたが何をしているのか、入力をどの程度制御できるのか、そしてどこかに保存しているのかに依存すると思いますか?

ストレージには、Mike Dunlaveyが提案したものを使用します。

YYYYMMDDHHMMSSの時間はUTCですが、あなたが与える理由により、私が選択できるときはいつでも私が行く方法です。選択肢がない場合は、ユーザーに選択させます。

彼はこれを答えとして残さなかったので、私は残します。

もう1つ:CCの有効期限を入力する方法の次のスクリーンショットを確認してくださいhttp : //www.ubercart.org/files/credit_card_checkout.jpg

この例の素晴らしい点は、それがあなたを考えさせないことです。月の番号と名前の両方を使用します。入力に同様のものを使用することを検討します。月には、番号とローカライズされた名前の両方を含めます。年と日の場合は、数値のアップ/ダウンまたはコンボボックスを使用します。次に、カレンダーコントロールも気の利いたようです。

私が言ったように、それは依存します。ストレージの場合:データベースを使用している場合は、データベースが明確で明確なデータ形式を提供しているかどうかを確認します。他の方法を使用している場合は、「時がUTCであるYYYYMMDDHHMMSS」が役立つかどうかを確認してください。それをユーザーに提示するには、どの国やロケールが関係している可能性があるかを考慮して、最もわかりやすい「私に考えさせない」種類の表現を選びます。オプションの提供も検討してください。

最後に、すでに似たようなことをしているいくつかのクールな製品をチェックして、それらがどのようにそれを行うかを調べてみてください。


ああがらくた、スクリーンショットを読んだとき、私は11月11日について話していると思った...クレジットカードの有効期限について話すとき、その日は必要ないことを理解するためだけに:/
Matthieu M.

@Matthieu M.、はい、それは少し誤解を招きやすいです:)ただし、CCを手に持っていてデータ入力を実行しようとしている場合、おそらくそれは痛い以上のものを助けます。3つのボックスがあった場合-その日のボックスは、あいまいさが少なくなる可能性があります。
仕事

0

Webサイトのエンドユーザーに共通の日付と時刻の形式はありません。値はクライアントのタイムゾーンごとに異なるため、単一の日付時刻値もありません。グローバリゼーションを使用する必要があります。ユーザーの文化に基づいたデータ、時間、通貨、カレンダー、ナブマー形式のターゲティングです(ユーザーのブラウザーから渡された承認済み言語から、またはアプリケーションに直接実装されたスイッチによって受信できます)。一部のAPI(.NETなど)は、この機能を直接サポートしています。

日付と時刻をデータベースに保存するには、ユニバーサル形式のUTC(協定世界時)を使用します。


UTCはそれほど普遍的ではありません。うるう秒を考慮に入れる場合は、TAI
mouviciel

-2

国際コンピューティングの世界のすべてのインテリジェンスがこのナットを解読できないことは残念です。

マイクロソフトや他のベンダーは、日と同じように月をゼロで埋めるように日付マスクを追加することを検討していませんが、3桁です。慣習を採用することで、数学的に同等の新しい一連の変更された日付形式を促進し、従来の日付レイアウトで簡単に識別および区別できるようになります。あれは:

  • 0MM-DD-YYYY(例:2016年2月3日は002-03-2016)

  • DD-0MM-YYYY、たとえば03-Feb-2016の場合は03-002-2016

  • YYYY-0MM-DD(例:2016-02-03の場合は2016-002-03)

  • YYYY-DD-0MM、例:2016-03-002(誰かが使用したい場合!)

この方法で修正するのは簡単すぎるようです...シンプルなだけではうまく売れないと思います。


2
私が言えることは、xkcd.com / 927 だけです。日付のISO規格はすでにあり、別の規格は必要ありません。
Simon B
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.