ISO 8601日付フォーマットの解説

API、データベース、データ交換で使用されるISO 8601日付・時刻フォーマット標準を学びます。拡張形式と基本形式、タイムゾーン指定子、期間をカバー。

Standards

詳細な説明

ISO 8601 — 国際日付標準

ISO 8601は日付、時刻、時間間隔を表現するための国際標準です。1988年に初めて公開され、API、データベース、設定ファイル間のデータ交換のデファクト標準となっています。

基本フォーマット

最も一般的なISO 8601表現は拡張形式です:

2026-02-28T14:30:00Z
2026-02-28T14:30:00+09:00
2026-02-28T14:30:00.123Z

内訳:

  • 2026 — 4桁の年
  • 02 — 2桁の月(ゼロパディング)
  • 28 — 2桁の日(ゼロパディング)
  • T — 日付と時刻のリテラルセパレーター
  • 14:30:00 — 24時間形式の時、分、秒
  • Z — UTCタイムゾーン指定子(または+09:00のようなオフセット)

基本形式(セパレーターなし)

ISO 8601は区切り文字なしの基本形式も定義しています:

20260228T143000Z

読みにくいですがよりコンパクトで、一部のファイル命名規則やコンパクトデータ形式で使用されます。

タイムゾーン指定子

  • Z — UTC(「Zulu time」とも呼ばれる)
  • +09:00 — UTCからの正のオフセット(例:JST)
  • -05:00 — UTCからの負のオフセット(例:EST)

ISO 8601が重要な理由

  1. 曖昧さがない — "02/03/2026"は2月3日か3月2日か不明だが、ISO 8601は解釈が一つ
  2. ソート可能 — 文字列ソートが時系列順になる
  3. タイムゾーン対応 — オフセットまたはZサフィックスで絶対的な時刻が明確
  4. 機械可読 — すべての主要言語にISO 8601パーサーが組み込み

各言語のパターン

言語 パターン
JavaScript (date-fns) yyyy-MM-dd'T'HH:mm:ssxxx
Python %Y-%m-%dT%H:%M:%S%z
Java yyyy-MM-dd'T'HH:mm:ssXXX
PHP Y-m-d\TH:i:sP
Go 2006-01-02T15:04:05-07:00
C# yyyy-MM-dd'T'HH:mm:sszzz

ユースケース

ISO 8601はREST APIレスポンス、JSONシリアライゼーション、データベースのタイムスタンプ、ログファイル、およびシステム間で曖昧さのない日付交換が必要なすべてのシナリオの標準フォーマットです。JavaScriptのDate.toISOString()はこのフォーマットをネイティブに出力します。

試してみる — Date Format Reference & Tester

フルツールを開く