ISO 8601 の時刻表記

ここでは ISO 8601 に従う時刻の記録について説明します。

時刻記録の動機

コンピュータシステム上で何か処理を行った際、通常、処理を行ったか時刻を記録しておきます。

ユーザー側の業務規則として時刻の記録が必要な場合が多いだけでなく、システム屋の立場からも正しく記録しておいた方が、 トラブルシューティング等で何かと役に立ちますので、少なくとも主要な処理ではタイムスタンプは取っておくべきです。

さて、時刻とひとくちにいっても、今どきサーバーはいろんな場所に分散されていることは珍しくないので、 ひとつの取引に関する情報を処理するシステムのタイムゾーンがまちまちであることも多いです。

システムの規模が比較的小さく、ひとつの取引に絡むシステムが全て同一タイムゾーンに存在している、ということが明白でない限り、 時刻の情報にはタイムゾーンの情報が必要です。あるいは、仕様として統一して UTC で記録します。

特に EDI などでは、ドキュメント (データ) は一人歩きするのが前提ですから、 時刻は国際標準である ISO8601 に従うフォーマットで記録するのが普通です。

というわけで、この資料では ISO8601 フォーマットのうち、よく使われる (= 必ず意味を覚えておきたい) フォーマットについて説明します。

ISO8601 ~ 日付・時刻の表記

日付・時刻の表記でよく出てくるのは、国際標準 ISO 8601 に従う表記です。

その中でもいろんなバリエーションがありますが、ここではよくお目にかかる表記について書いておきます。

日付 : YYYY-MM-DD

日付は年・月・日の順番で記載し、区切り文字はハイフンです。

年月日は 4 桁、2 桁、2 桁で記載し、4 月、 1 日など、1 桁で済む場合は左から 0 で埋めます。(例: 2011年4月1日は 2011-04-01)

ハイフンは省略できます。 (例: 2011年4月1日は 20110401)

時刻:hh:mm:ss (hh は 24時間表記) が基本

時刻は24時間表記で、時間、分、秒を hh:mm:ss で表記します。

それぞれの部分が 2 桁で必要に応じて 0 埋めします。

ミリ秒を追加する場合は hh:mm:ss.sss、あるいは秒を省略する場合は hh:mm となります。

区切り文字のコロンも省略できます。

省略可能といっても、無駄に可読性を落とすことにメリットがあるか、考えてからにしましょう。通常あまり省略されません。

日付と時刻の区切り文字は T を使います。

従って、2011年4月1日午後3時45分は "2011-04-01T15:45" になります。

タイムゾーン:±hh:mm 等。UTC なら Z も

タイムゾーンは UTC からの時差を、時刻に続けて ±hhmm または ±hh:mm または ±hh で書きます

直感的にわかりやすく、迷うことはあまりないと思いますが、どの表記もよくみかけます。

(例) 日本時間の 2011年4月1日午後3時45分なら、日本は UTC から 9 時間進んでいますので、2011-04-01T15:45+09:00 のように書きます。 これで「UTC から 9 時間プラスのタイムゾーンでの 2011年4月1日午後3時45分ですよ」と書いたことになります。

UTC の場合は +00:00、+0000、+00 または Z を添えます。

例えば UTC 時刻の 2011年4月1日午後3時45分なら、2011-04-01T15:45+0000 とか 2011-04-01T15:45Z と書きます。

その他にも省略したり、週の表記があったりするので、ISO8601 にはバリエーションはありますが、 ここではよく使われる最低限の時刻表記ルールについて記載しました。

ここまでお読みいただき、誠にありがとうございます。SNS 等でこの記事をシェアしていただけますと、大変励みになります。どうぞよろしくお願いします。

© 2024 Web/DB プログラミング徹底解説