日付および時刻の国際標準表記法 要約

(原文 "http://www.cl.cam.ac.uk/~mgk25/iso-time.html")

マルクス・クーン(Markus Kuhn) 著

国際標準化機構 ISO 8601 では日付および時刻を数字であらわす方法を定めている。 国によって時間の表記法がまちまちであることによって生じる、国際的な意志伝達における混乱を避け、 異なる地域での電算機使用をさらに可能にすることに、この標準表記法は寄与する。 加えて、電算機使用の際にこの書式を用いることには、他の伝統的な日付や時刻の表記法に比べて 重要ないくつかの長所がある。 ここで述べられている時刻の表記法はほとんど全ての国で事実上の標準になっており、 また日付の表記法についても、ますます一般的になってきている。

ウェブページ製作者、ユーザ・インターフェース、ファイル規格、通信規約を扱う技術者は特に ISO 8601に通じておくべきである。

目次: 日付, 時刻, 時間帯.

日付

日付の国際標準表記法は次のとおりである。

YYYY-MM-DD

ここで、 YYYY は通常用いられているグレゴリオ暦の「年」、 MM は01( 一月) と12 (十二月)の間の「月」、 DD は 01 と 31 の間の「日」である。

例を示す。1995年2月4日は標準表記法では次のように記される。

1995-02-04

他の通常使われている表記法には、例をあげると、 2/4/95、4/2/95、95/2/4、4.2.1995、04-FEB-1995、4-February-1995、 等があり、まだ様々なものが多く存在する。 特に始めの2つの例の表記を使用するのは危険である。 なぜなら、どちらもきわめて頻繁に合衆国および英国で使用されており、両者は識別することができないし、 さらに 2/4/95 が 1995-04-02 を意味するのか 1995-02-04 を意味するのかが明確ではないからだ。 2/4/5 という日付には少なくとも6通りに解釈される可能性がある (我々の生存期間中では、20世紀と21世紀のみが現実的に可能性がある、とすればの話だが)。

他の一般的な表記法と比較したときの「ISO 8601 標準日付表記法」の長所:

2000-01-01 から始まる日付というのは、どう表記してもやや奇妙な感じ(1/1/0 のように)がするので、 日付を標準表記法に変更するのに2000年は絶好の機会である、と以前から提案されていた。

ISO 8601 は数字による表記法のみを規定しており、 日付や時刻の表記に月名が用いられている場合までは規定していない。 それは、"24. Dezember 2001"(ドイツ式)や"February 4, 1995"(合衆国式)といった、 特定の言語に依存する月名を用いる日付の表記法の代用とすることを意図してはいないのである。 だが、"2/4/95" や "9.30 p.m."といった表記法は、ISO 8601 方式にとってかわられるべきものである。

最も推奨されている標準的表記法、YYYY-MM-DDとは別に、 ISO 8601 は、特殊な用途に応じた別の書式を定めている。 これらの書式は、容易かつ自動的に互いに区別されうる。

読みやすさよりも表記の短かさの方ががより重要であるときは、ハイフンを省略できる。

19950204

何世紀か、という情報が必要ないときは、2桁での年表示が可能である。

95-02-04または 950204

月のみ、もしくは年のみについてしか述べる必要のないときは、 次のように表してもよい。

1995-02 or 1995

特にヨーロッパでは、商業、工業の分野(配送時間、生産計画など)で、 年間の第何週か、と表記する必要がしばしば生じる。 その年の第01週は、木曜日がその年に含まれる始めの週である、と定義される。 それは、その年の1月4日を含む週、と同義である。 いいかえると、新年の始めの週とは、新年の方ににより多くの日を含む週である。 また、第01週は前年の何日分かを含むことがあり、 ある年の第01週の前の週は、次年の日を何日か含んでいたとしても、前年の最後の週(第52週もしくは第53週)になる。 一週間は月曜(第1日)に始まり、日曜(第7日)で終わる。 例えば、1997年の第1週は、1996-12-30に始まり、1997-01-05に終わる。 標準表記法では次のようになる。

1997-W01 または 1997W01

週による表記法でも、週の何日目かを示す数字を用いることで、 日付を表すことができるようになる。例えば、1997年第01週の火曜日(第2日)である 1996-12-31という日は、次のように書かれる。

1997-W01-2 または 1997W012

工業生産計画のように、勤務時間の割り当てのみならず 多くの事柄が週単位で決定されている場合に実際に使用するには、 第何週の何日目、という方が、月の何日目というよりもより手軽に理解できる。

次のような、省略された年・週表示

95W05

を用いると、製品に製造年月日を示すために印刷する際により使用しやすいことが多い。

ISO 標準規格は、年間第何週までがありうるかということに関して明言を避けているが、 その答えは容易に定義から理論的に導かれる。

定理: ISO 標準表記による週は、第01週から第53週までの値をとりうる。また、一年には常に第52週が存在する。 (歴史上一度だけ例外が存在した。グレゴリオ暦が導入された年は365日以下しかなく、年間52週に満たなかった。)

証明: 定義によると、ある年の始めの週はW01であるから、W01以前の日は前年に属するので、 第01週以下の数値をもつ週は存在しない。 存在しうる最大の数値をもつ週を考えると、それは1976年のように、木曜日で始まるうるう年である。 なぜなら、W01に属することのできる前年の日が最大限、すなわち3日、W01に含まれてるからである。 この場合、W52の日曜日は一年の第 4+51*7=361 日目にあたり、 W53のうち 361-366=5 日もまたその該年に属している。 このことは、W53の第4日(木曜)は次の年に属していないことを保証しているので、 W53が存在しうる最大の週の数値であることの証明となる。 例えば、この最も極端な例の年、すなわち1976年に属する週は、 1975-12-29 = 1976-W01-1 に始まり、 1977-01-02 = 1976-W53-7 に終わる。 一方、存在しうる最終週の最小の数値を考えると、 それは1999年のように、うるう年でなく、金曜に始まる年である。 それはすなわち、その年の始めの3日が前年の最終週に属しているということを意味している。 この場合、W52の日曜は年の第 3+52*7=367 日目にあたる。すなわち、 W52のうち最後の 367-365=2 日分だけが次の年に属することになるので、 この最も極端な場合、すなわち1999年のような場合においても 1999-12-27 から 2000-01-02 を含むので、W52が存在する。(証明終り)

[残念ながら、C言語の最新版の標準仕様においても、strftime() 関数を 用いて ISO 8601 の週表記を生成する方法は与えられていない。 次の4つの新しい書式を決定するコード、すなわち: 特定の日が属する週の属する年(2桁でも4桁でもよい)、 01から53の週の値、 1(月曜)から7(日曜)の日の値、 がこれから必要とされている。 C言語標準仕様におけるstrftime()関数のもつ、もうひとつのささいな間違いは、 秒の値の範囲が00から61まで存在することである。なぜなら、 協定世界時 (UTC)に挿入されるのは、 毎回「60秒」といううるう秒ただひとつであり、 「61秒」といううるう秒は決して存在しないからだ。 国際標準化機構(ISO) C言語委員会 に対して提出された N764 では、ISO C言語標準仕様の次の改訂版にこのうちいくつかを採用するよう示している。 著者はすでに、C言語のために modernised clock and calendar API (最新版の時計・暦のAPI) を提案することを明らかにしている。 これによって、うるう秒や時間帯の完全に適切な扱いが可能になり、 現在のC言語の時間変換関数における他の多くの問題が解決されることとなる。またこれは、 他のプログラミング言語での時間変換関数を設計しようとしている人に対しても、 素晴らしい模範として貢献することであろう。]

日、年はともに時刻を構成するために使用されるうる単位である。 生活に影響を与えている空での太陽の位置は、これによって記述されるからだ。 (月の現在位置は日や年を用いても記述することはできない。) しかし、一年に12ヶ月あるのは、いくつかのよくわからない謎めいた起源によるもので、 いまでは単に慣れ親しんでいるという理由のほかには実際的な目的をもつものではない。 いくつかのソフトウエアでは、西暦年に年間第何日目かを 001から365(うるう年には366)で表わす数字を加えて表わす表記法が好んで用いられている。 このもうひとつの標準表記法では、1995-02-04(1995年の第035日)は、 次のように表記される。

1995-035 または 1995035

うるう年とは、 YYYY-02-29 が一年に加えられる年であり、 その年の値は、次の例外を除いて4の倍数になっている: 年の値が100の倍数のときはうるう年ではない。ただし、400の倍数でもあるなら、 それは通常のうるう年である。例えば、1900年はうるう年ではないが、2000年は うるう年になる。

時刻

時刻の国際標準表記法は次のとおりである。

hh:mm:ss

ここで hh は深夜0時から計何時間経過したかを示す数字(00-24)、 mm は1時間の始まりから計何分経過したかを示す数字(00-59) 、 ss は1分の始まりから計何秒経過したかを示す数字(00-59) である。 時間を示す値が24のときは必ず分と秒の値は零になる。 [ISO 8601 では言及されていないが、「60秒」という値はしばしば、 協定世界時 (UTC)のような原子時のスケールで運用されている時間に挿入される うるう秒 が経過する時間の間には必要となるであろう。通常のうるう秒 23:59:60 は UTC 時間に数年毎に挿入される。その時刻は、 UTC ほどは一定していない、実際の地球の自転によって定義される天文学時間 UT1 との誤差を0.9秒以下に押さえるため、パリに設けられた International Earth Rotation Service 国際地球自転サービス によって告知される。]

時刻表記の例は、次のようになる。

23:59:59

これは深夜0時の1秒前の時刻を表わしている。

日付の表記法と同様に、時・分・秒を分割しているコロンは省略でき、次のようになる。

235959

秒、または分・秒両方を省略すると、次のように正確な時刻がわからなくなってしまう。

23:59235923

小数点やコンマの後に小数点以下の秒の時刻を加えることもできる。 例えば、深夜0時の5.8ミリ秒前の時刻は、次のように記される。

23:59:59.9942 または 235959.9942

一日の始まりも終りも深夜0時であるから、 00:0024:00 という二つの時刻表記は、どちらかの日付に属するべき二つの深夜0時を区別するために 使用することができる。このことは、次の二つの時刻表記は全く同じ時刻を表している ということを意味する:

1995-02-04 24:00 = 1995-02-05 00:00

一意的な時刻表記が要求されるときは、24:00 ではなく、00:00 という表記の 方が望ましい。デジタル時計では 24:00 ではなく、 00:00 と表示される。

ISO 8601 では、その表記がある時間の一点を示しているのか、または ある時間の範囲を示しているのかについては明確にされていない。 これは、 09:00 という表記によって示されているのが 一日の9番目の時間のちょうど最後の時間の一点なのか、 09:00 から 09:01 までの間の時間なのか、 またはそれ以外なのかがISO 8601 では定義されていないということである。 もしこの問題が重要な課題なのだとすれば、この標準表記をの使用者たちは、 なんらかの形で、時刻表記の厳密な解釈について合意を形成しなければならない。

日付と時刻が同じ行に並べて書かれるときは、常に時刻の前に日付を 記す。日付と時刻の数値がまとめて一つのデータ項目に蓄積されるときは、 次のように、ラテン大文字 T によって両者を分けるよう、ISO 8601 では 推奨されている。 19951231T235959

合衆国市民の読者への注意:

ここで定められている24時間制の時刻表記法はすでに ここ数十年で世界中の言語表記において事実上の標準表記法に なっている。例外は、1から12の数字にに"a.m."や "p.m."を組み合わせる 表記法がいまだに広く使用されている、いくつかの英語圏の国だけである。 いまや英国においても共通の24時間制国際標準表記法が広く使用される ようになり始めた。他のほとんどの言語においては"a.m."や "p.m."といった 省略型さえ存在せず、12時間制表記法はヨーロッパ大陸では記録や表示する際にも かつてほとんど用いられたことはないはずである。合衆国においてさえ、軍隊内や電算機 プログラマーは長きにわたって24時間制を用いている。

古い英語の12時間制の表記法には次のように多くの欠点が存在する。

12時間制はローマ数字が用いられ、まだゼロという数字の概念が発見 されておらず、時間を表示するただ一つの方法がアナログ時計であった、暗黒時代の 遺物であることを是非考慮してほしい。 特に、技術的な分野での使用は、もはや認められない! すでに合衆国での状況も、広くその権威が認められている Chicago Manual of Style が、出版における時刻の表記法として 国際標準表記法を使用することを推奨している、ところまできている。

ドイツ語圏の読者への注意:

1996年5月、タイプライターによるドイツ語の文章作成に関する 規則を定めている、ドイツの標準機構 DIN 5008 が改正された。 以前のドイツ語の DD.MM.YYYY や DD.MM.YY といった日付表記法は、 YYYY-MM-DD や YY-MM-DD という、ISO による日付表記法にとって変わられた。 同様に、以前のドイツ語の hh.mm や hh.mm.ss という時刻表記法も、 hh:mm や hh:mm:ss という、ISO による時刻表記法にとって変わられた。 これらの新しい表記法については、Dudenの最新の版においても述べられている。 ドイツ語の月名を使った日付表記法は、"3. August 1994" や "3. Aug. 1994"という形で継続して 使用される。オーストリアの同様な標準ではすでに、ISO 8601 の日付・時刻表記法が以前から用いられている。

ISO 8601 はすでに欧州標準規格 EN 28601 として採用されているので、 現在、全ての欧州連合の国で有効な標準規格となっており、互いに食い違っている 国ごとに存在するあらゆる標準規格が、これにしたがって変更されてきている。

時間帯

特別なことわりなしに、上記では、日付や時刻はある地域の時間帯でのことと仮定して 議論を進めてきた。時刻が 協定世界時 Universal Time (UTC)によるものであることを明記するには、 時刻に大文字 Z を付け加えればよい。

23:59:59Z または 2359Z

[Z という文字は、ロンドンにあるグリニッジ天文台を通る「経度ゼロ度 "zero meridian"」 を表わす。また、これは電波通信において共通して使われており、そこでは Z は「ズールー"Zulu"」 と発音される。(国際信号通話表での Z の呼称である。) 世界時 ("Zulu Time"とも呼ばれる) は1972年以前はグリニッジ標準時(GMT)と呼ばれていたが、この用語はもはや用いられていない。 国際原子時の導入以来、ほとんど全ての用いられている時間帯はUTC に基づくものとなっており、 もはや使用されていない GMT とはわずかに異なっている。]

次の時間差を示す文字列

+hh:mm+hhmm、または +hh

を時刻に書き加えることによって、 その地域の時間帯が UTC より hh 時間 mm 分だけ先行していることが示される。 軽度ゼロ度より西の時間帯、つまり UTC より遅れる時間帯では、

-hh:mm, -hhmm, or -hh

が代わりに書き加えられる。例えば、ヨーロッパ中央時 (CET) は +0100 で、 合衆国/カナダ東部標準時 (EST) では -0500 となる。 次の時間表記は、すべて同じ時間の一点をあらわしている。

12:00Z = 13:00+01:00 = 0700-0500

CET や EST のような、時間帯の呼称を定める国際標準は存在しない。 また、全く異なる二つの時間帯が同じ略称で表されることもしばしばある。 さらに、政治家がたわむれに、特に数年ごとの夏時間の導入の際、時間帯の修正をすることがあるので、 UTC との時間差を、数値を用いて定める方法だけが、ある地域の時間帯を記述する本当に信頼できる方法である。 さらに、自分だけのための時間帯としてそのまま UTC を使うことができれば、 時間帯や、夏時間の変更に悩まされることは全くなくなるのでなおよい。

時間帯についてさらに知りたい人へ

Arthur David Olson およびその他の人によって、 現在の全ての時間帯、多くの時間帯の歴史的変遷、および夏時間の算出法に関するデータベースが運営されている。 これは、 elsie.nci.nih.gov から ftp 規約で tzcode* および tzdata* ファイルを引き出すことによって使用できる。 ほとんどの Unix の時間帯を扱う implementationsは、このパッケージに基づいている。 もし、時間帯およびこのソフトウエアについての議論を行っている tzメイリングリストに参加したいなら、 tz-request@elsie.nci.nih.gov に参加登録を求めるメールを送っていただきたい。 また、以前の議論の内容を知りたいなら、 tz archive で読むことができる。

その他の日付、時間、暦についてのリンク集

インターネット上のその他の興味深い日付や時間に関する情報源を次に示す。
NIST(訳注:National Institute of Standards and Technology 国立標準/技術研究所) による Glossary of Time and Frequency Terms(時間と周波数に関する用語集) とその FAQ
the Yahoo! Science:Measurements and Units:Time (自然科学と技術 > 測定、単位 > 時間) リンク集、
合衆国海軍観測所サーバ
the International Earth Rotation Service (IERS) (時間愛好家のみおすすめ!)、
デラウエア総合大学 NTP Time Server (訳注:Network Time Protocol、クライアントとサーバとの間の時刻を同期させる通信網時間規約)
USENET sci.astroの、時間および暦についての分野の FAQ
そして、 暦についての FAQ


この文章は ISO 8601 に関する短い概論であり、最も重要と思われる表記法のみを扱った。 また、それに関連するさらなる情報も含まれている。 完全版の標準表記では、いくつかの時間範囲表記のような、 さらに多くの見慣れない表記法の定義がなされている。 The ISO 8601:1988 document は、 ウエブ上でも読むことができる ようになった。もしくは、以下の住所に冊子を注文する方法もある。

国際標準化機構
International Organization for Standardization

Case postale 56
1, rue de Varembe
CH-1211 Geneve 20
Switzerland

電話: +41 22 749 01 11
ファクシミリ: +41 22 733 34 30
電子メール: sales@isocs.iso.ch

ウエブ上の、本頁よりさらに詳しい ISO 8601 についての Gary Houston による概論 ISO 8601:1988 Date/Time Representations(日付/時刻の表記法) が、ftp で、 ftp.informatik.uni-erlangen.de/pub/doc/ISO/ISO8601.ps.Z より見ることができる。これは、 HTML も使用されるようになった。 Ian Galpin (G1SMD)は、 ISO 8601 を アマチュア無線での共通の標準の日付/時刻の表わし方 として用いることを提案している。 一部このページの文に基づいて書かれている、ISO の日付の書式に関する 別のウエブページ が、 Steve Adams によって著わされている。

ISO TC 154 は 1996年に ISO 8601に改定されることが決定された。 Louis Visser がこの計画の主催者である。この計画に参加、貢献したいなら、 あなたの国の ISO 会員 に連絡をとればよい。


価値ある GNU Emacs calendar 関数の開発に関して、 Edward M. Reingold 氏に感謝の念を表します。また、 comp.std.internatcomp.protocols.time.ntpsci.astro USENET メールディスカッショングループの Rich WalesMark BraderPaul Eggert その他の各氏にも、この文章作成に有益な助言をいただいたことを 感謝します。 また、さらなる御意見、このページへのリンクについては大歓迎です。

最近、国際的な日付や時間の書式について興味をもつジャーナリストが現れ、 この問題について書かれた次のような記事もあります。

もしあなたがジャーナリストで、これに関連することがらについての情報が必要なら、 遠慮せず私に連絡してください。

また、 国際標準紙寸法規格 のページもあなたの興味のあるところではないでしょうか。

マルクス・クーン Markus Kuhn <Markus.Kuhn@cl.cam.ac.uk>
(原文)初版 1995 -- 最終更新 2000-01-24 -- http://www.cl.cam.ac.uk/~mgk25/iso-time.html
(邦訳版)初版 2000 -- 最終更新 2000-03-12 -- http://www.geocities.co.jp/CollegeLife-Cafe/1646/roomazi/date-time-uni.html