cv.cm

知識 · 日期與時間

ISO 8601 日期格式是什麼?

閱讀約 6 分鐘

簡答

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 固定採用「年、月、日」一種順序,年份四位數,月和日兩位數並補零,消除了猜測。

另一個好處是排序: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(讀作「Zulu」)表示時間為 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-5屬於從 2020 年 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 週

一年有 52 或 53 個 ISO 週。美式日曆的週數常以星期日為一週開始,且 1 月 1 日一定在第 1 週,可能與 ISO 週數相差一週。

期間與時間區間

期間以 P(period)開頭,先寫日期部分,接著 T,再寫時間部分。為零的部分可以省略。

期間意義
P3DT4H3 天又 4 小時
PT30M30 分鐘
P30M30 個月,不是分鐘:T 很重要
P1Y2M10D1 年 2 個月又 10 天
P2W2 週
PT0.5S半秒

時間區間以斜線連接兩個部分:2026-10-14/2026-10-20(開始與結束)、2026-10-14T09:00Z/PT2H(開始與期間),或 P1D/2026-10-14(期間與結束)。以年和月表示的期間沒有固定秒數,所以軟體會依日曆來加,而不是加上固定秒數。

RFC 3339:網路上的嚴格規範

ISO 8601 允許許多變化,讓完整的剖析器變得複雜。RFC 3339 為網際網路協定挑選了一種規範,多數 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 週。

所有知識文章