cv.cm

基礎知識 · 日付と時刻

ISO 8601 の日付形式とは?

約7分で読めます

結論

ISO 8601 は、日付と時刻をテキストで書くための国際規格です。基本形は単位を大きいものから小さいものへ並べ、日付は 2026-10-14、UTC オフセット付きの瞬間は 2026-10-14T09:30:00+02:00 と書きます。ほかにも 2026-W42-3 のような週日付、年間通算日、P3DT4H のような期間を定めています。あいまいさがなく、文字列として並べ替えると時間順になるため、ほとんどの API やデータ形式で使われています。

週番号を開く

なぜ YYYY-MM-DD なのか

03/04/2026 は世界の多くの地域では4月3日、米国では3月4日です。ISO 8601 は、年・月・日の順に固定し、年は4桁、月と日はゼロ埋めの2桁にすることで、この推測を不要にしました。

もう1つの利点は並べ替えです。YYYY-MM-DD 形式の文字列は、文字列として並べ替えると日付そのものと同じ順になるので、2026-10-14-report.pdf のようなファイル名はどのフォルダーでも正しく並びます。

形式拡張形式(区切りあり)基本形式(区切りなし)
暦日付2026-10-1420261014
年間通算日付2026-2872026287
週日付2026-W42-32026W423
時刻09:30:00093000
UTC の日時2026-10-14T09:30:00Z20261014T093000Z
オフセット付きの日時2026-10-14T11:30:00+02:0020261014T113000+0200

時刻、タイムゾーン、そして Z

時刻は日付のあとに T を挟んで書きます。時は 24 時間制で、秒の小数部は小数点のあとに続けます:09:30:00.250。

  • Z(「ズールー」と読む)は UTC の時刻であることを示します:2026-10-14T09:30:00Z。
  • +02:00 や -05:00 のようなオフセットは、ローカル時刻と、それが UTC からどれだけずれているかを示します。2026-10-14T11:30:00+02:00 は上の UTC の例と同じ瞬間です。
  • Z もオフセットもない時刻は、タイムゾーン不明のローカル時刻です。ISO 8601 としては有効ですが、他のシステムからはどの瞬間を指すのかわかりません。

オフセットはタイムゾーンではありません。+01:00 は冬のパリかもしれないし、一年中のラゴスかもしれません。ISO 8601 が記録するのはオフセットだけで、タイムゾーンのルールは IANA タイムゾーンデータベースなど別のところから得ます。

週日付と週番号

ISO の週は月曜日に始まり、第1週はその年の最初の木曜日を含む週(言い換えれば1月4日を含む週)です。週日付は、年、W、週番号、曜日(1 = 月曜日〜7 = 日曜日)の順に書きます。

週が年をまたいで分割されないため、年の境目では ISO の週番号年が暦年と異なることがあります。

暦日付ISO 週日付理由
2021-01-01(金曜日)2020-W53-52020年12月28日(月)に始まった週に属する
2024-12-30(月曜日)2025-W01-1その週に2025年1月2日(木)が含まれる
2026-01-01(木曜日)2026-W01-41月1日自体が木曜日
2027-01-01(金曜日)2026-W53-52026年は木曜日に始まるので 53 週ある

1年は 52 週か 53 週です。米国のカレンダーの週番号は日曜日始まりで、1月1日が常に第1週になることが多く、ISO の週番号と1つずれることがあります。

期間と時間間隔

期間は P(period)で始めます。日付の部分を先に書き、T を挟んで時刻の部分を書きます。ゼロの部分は省略できます。

期間意味
P3DT4H3日と4時間
PT30M30分
P30M30分ではなく30か月。T の有無が重要
P1Y2M10D1年2か月10日
P2W2週間
PT0.5S0.5秒

時間間隔は2つの部分をスラッシュでつなぎます:2026-10-14/2026-10-20(開始と終了)、2026-10-14T09:00Z/PT2H(開始と期間)、P1D/2026-10-14(期間と終了)。年や月の期間は秒数に換算した長さが一定でないため、ソフトウェアは決まった秒数としてではなく、カレンダー上で加算します。

RFC 3339:Web 向けの厳格なプロファイル

ISO 8601 は多くのバリエーションを認めているため、完全なパーサーは複雑になります。RFC 3339 はインターネットのプロトコル向けに1つのプロファイルを選んでおり、ほとんどの JSON API、Atom フィード、ログ形式がこれに従っています。

  • 日付と時刻の両方が必須で、常に拡張形式で書きます:2026-10-14T09:30:00Z。
  • すべてのタイムスタンプに Z か、+02:00 のような数値のオフセットが必要です。オフセットのないローカル時刻は認められません。
  • 週日付、年間通算日付、期間はこのプロファイルに含まれません。
  • -00:00 は、時刻は UTC だが元のローカルのオフセットは不明であることを示します。
  • RFC は、読みやすさのために T の代わりにスペースを使ってもよいとしており、多くのデータベースはこの形式で出力します。

よくある質問

ISO 8601 の日付にある T は何を意味しますか?

T は日付と時刻の区切りで、2026-10-14T09:30:00 のように使います。RFC 3339 では、読みやすさのためにその位置にスペースを置くことも認められています。

タイムスタンプの末尾の Z は何を意味しますか?

Z は時刻が UTC、つまりオフセットがゼロであることを示します。09:30:00Z と 09:30:00+00:00 は同じ瞬間を表します。

ISO 8601 と RFC 3339 は同じものですか?

RFC 3339 は、インターネットで使うために ISO 8601 をより厳格に絞り込んだサブセットです。RFC 3339 のタイムスタンプはすべて ISO 8601 として有効ですが、ISO 8601 には週日付や期間など、RFC 3339 が認めない形式もあります。

ISO 8601 ではどの週が第1週ですか?

その年の最初の木曜日を含む、月曜日から日曜日までの週が第1週です。そのため1月1日が前年の第 52 週や第 53 週に入ることもあります。

基礎知識の記事一覧