7

アプリケーションの基準を設定しています。

私は疑問に思っていましたが、どのデフォルトの日付形式を使用することを選択する必要がありますか?

そのはず:

  • 国際化とタイムゾーンを認識し、フォーマットはユーザーの現地時間を表すことができる必要があります
  • SimpleDataFormat(または同様に、jdkクラスのみ)によって効率的に解析できます
  • プログラミング言語に依存しない(java、python、god forbid C ++ :)などで解析できます。)
  • できればISOベースまたはその他の受け入れられている規格
  • HTTPを介した通信が簡単(このようなニーズが発生した場合は、JSONまたはYAML、またはこの種の何か)
  • 時間を秒単位の解像度で表すことができます(精度が高いほど、可能であればマイクロ秒)。
  • 人間が読める形式はプラスですが、必須ではありません
  • コンパクトはプラスですが必須ではありません

ありがとう、
マキシム。

4

3 に答える 3

8

yyyy-MM-ddThh:mmZ ( ISO 8601を参照) 秒などを追加できます

簡単に読めますし、SimpleDateFormat なら問題ありません。

于 2011-01-27T21:51:13.147 に答える
1

「正しい」デフォルト形式は、実際に何をしているかによって異なります。解析、保存、および表示の形式はすべて異なる場合があります。

日付を保存するために、ユーザーの現地時間で表示したい場合でも、aioobe が言うように、(ほとんど) 常に UTC を使用したいと思うでしょう。「(ほぼ)」と言っていますが、保存された日付にUTCが必要ない場合は本当に考えられません。日付が発生した場所の TZ 情報も保存して、その現地時間で報告できるようにすることもできますが、現在日付を見ている人のために現地時間を表示したいことがよくあります。これは、元のローカル時間に関係なく、現在のユーザーのローカル時間を決定する方法を持つことを意味します。

それを表示するために、「デフォルト形式」は通常、ビューアのロケールによって決定されます。08/09/10 は通常、米国では 2010 年 8 月 9 日 ("ミドル エンディアン") を意味しますが、その他の国では 2010 年 9 月 8 日 ("リトルエンディアン") を意味します。ISO-8601 形式の "2010-09-10" は安全で明確ですが、人々が期待するものではないことがよくあります。インターネット上の日付と時刻についてはRFC-3339を参照し、メッセージ形式 (日付を送信する) についてはRFC-2822を参照することもできます。

日付を解析するには、日付を解析して UTC に変換する必要がありますが、受け入れる内容についてはかなり柔軟にする必要があります。ここでも、エンド ユーザーのロケールとタイムゾーンが検出可能であれば、入力として受け入れる文字列の形式を決定するのに役立ちます。これは、ユーザーが入力した文字列を想定しています。日付/時刻スタンプを生成している場合は、フォームを制御でき、解析は問題ありません。

また、以前は見たことがなく、お気に入りになったBalusC リンクも 2 番目に追加しました。

于 2011-01-28T02:13:41.713 に答える
1

最も標準的で標準的な形式は、おそらく"Unix Time"です: 1970 年 1 月 1 日の協定世界時 (UTC) の午前 0 時から経過した秒数。

これをデフォルトの時間形式として設定すると、簡単に解析したり、メモリに保存したり、ディスクに書き込んだり、HTTP 経由で簡単に通信したりできます。また、これは間違いなく受け入れられている標準であり、タイムゾーンに関係なく明確に定義されているため、ある意味では「タイムゾーン対応」です。

(これは、私がすべてのタイム スタンプを常に保存する形式です。データベース、メモリ、ディスクなどに...)

于 2011-01-27T21:44:29.793 に答える