web-dev-qa-db-ja.com

UTC vs ISOフォーマット

UTCフォーマットとISOフォーマットとの違いを理解しようとしています。だから私が次のことを試すとき、これは私が得るものです

new Date().toISOString()
"2019-11-14T00:55:31.820Z"

new Date().toUTCString()
"Thu, 14 Nov 2019 00:55:16 GMT"
 _

私はISOフォーマットとその時間を表すために使用される標準を理解していますが、UTCの目的とは何ですか?

9
tmp dev

tL;博士

  • 常に使用する ISO 8601形式:2019-11-14T00:55:31.820Z
  • RFC 1123と822のレガシー形式を避けてください。Thu, 14 Nov 2019 00:55:16 GMT

UTC&GMTは、フォーマットではなく、時間を維持する

UTCとGMTはフォーマットではありません。

[〜#〜] utc [〜#〜][〜#〜] gmt [〜#〜] は、時間が2回のトラッキング時間の2つのわずかに異なる方法です。これは複雑なトピックであるので、あなたが本当に知りたいのなら幻想的な詳細のためのウィキペディアのページを見てください。

一般的なビジネスアプリケーションのためには、重要な違いはありません、文字通りセカンドの違いより少ないです。ほとんどのプログラマは、その用語を互換的に使用できます。あなたがNASA、またはGPS/Galileoナビゲーションプロジェクトのために働くならば、あなたはもっと学びたいです。

ISO 8601

あなたの最初の例の2019-11-14T00:55:31.820Zに見られる形式は, ISO 8601 標準によって定義されます。中間のTは、年月秒の部分から月の日数を分離します。末尾のZは、UTC、つまりゼロ時間​​-分秒のオフセットからUTCを意味します。 Zは軍隊/航空伝統ごとに「Zulu」と発音されます。

ISO 8601規格はより現代です。フォーマットは、マシンでの解析や文化を越えて人間によって読みやすいように賢明に設計されています。

日時値をテキストとしてシリアル化するときは、常にISO 8601を選択してください。

RFC 1123/RFC 822

あなたの2番目のサンプル文字列Thu, 14 Nov 2019 00:55:16 GMTは、古い標準 RFC 112RFC 822 で定義されています。

これらは 従来 フォーマットです。彼らは大胆で、機械で解析が困難です。そして、彼らは英語と特定の文化的規範を仮定するにつれて、彼らは人間にとって悪いです。

可能な限り、このフォーマットを回避します。これを使用すると、ISO 8601用にまだ更新されていない古いプロトコルとシステムに必要な場合にのみ使用してください。

時間帯

2019-11-14T00:55:31.820Zの例とは、ゼロ時間分秒のUTCからのオフセットを意味します。これは時刻と日付で、時計が Royal Observatory Greenwich に表示される前の時刻と日付です。

enter image description here

写真ソース

チュニジアの壁にぶら下がっている時計に見られるのと同じ同時瞬間が1時間後に1時間後に表示されます。2019-11-14T01:55:31.820 + 01:00 [アフリカ/チュニス]。チュニジアのタイムゾーンAfrica/Tunisは、+01:00によって指摘されているように、その瞬間に1時間of of of utcです。

ケベックの壁にぶら下がっている時計に見られるのと同じ同時瞬間は、前日のほぼ8 PMを示しています:2019-11-13T19:55:31.820-05:00 [アメリカ/モントリオール]。 QuébecAmerica/Montrealのタイムゾーンは、-05:00によって指摘されているように、その瞬間に5時間UTCの5時間です。

これらの計算は、Javaコード(あなたの質問にタグ付けされていない)で行われていることを確認することができます ideone.comでLive

あなたの思考、ビジネスロジック、データストレージ、データ交換、そしてUTCのほとんどのことをするために最善を尽くします。ビジネスルールで必要な場合、およびユーザーに値を提示するときだけ、タイムゾーンに調整します。

7
Basil Bourque