國際標準 ISO 8601，是國際標準化組織的日期和時間的表示方法，全稱為《資料元件及交換格式－資訊交換－日期及時間表示法》。目前是 2004 年 12 月 1 日發行的第三版「ISO8601:2004」以替代 1998 年的第一版「ISO8601:1998」與 2000 年的第二版「ISO8601:2000」。



基本原則


* 時間日期按照年月日時分秒的順序排列，大時間單位在小時間單位之前。除了公元前的時刻外，用本標準表示的兩個時刻中較早者在字典序上先於較晚者。這個特性有利於按時間排序。

* 每個時間單位的位數固定，不足時於左補 0。

* 本標準提供兩種方法來表示時間：其一爲衹有數字的基礎格式；其二爲添加分隔符的擴展格式，讓人能更容易閲讀。標準原文建議「應避免在純文本中使用基礎格式」。擴展格式使用連字符「-」來分隔日期，使用冒號「:」來分隔時間。比如 1919 年 8 月 10 日上午 11 時 45 分 14 秒在基礎格式中表示爲 "19190810T114514"，在擴展格式中表示爲 "1919-08-10T11:45:14"。

* 精度不足時，可以從右側開始忽略日期或時間的某個單位。比如 2004 年 5 月可以表示爲 "2004-05"。

* 實際運用中需要更高的精度時，可以在秒數後添加十進制小數。



日期表示法

ISO 8601 使用公曆。ISO 8601:2004 規定了一個參考日期，即 1875 年 5 月 20 日，當天《米制公約》在巴黎簽署；ISO 8601-1:2019 刪除了此參考日期。不過公曆自 1582 年 10 月 15 日公布後到米制公約簽署前的日期也一直適用此標準。

至於公布公曆前的日期，若通信雙方達成一致，也可以用公曆表示。標準要求推導這些日子在格里曆中對應的日期，而不能直接使用儒略曆。

年份

爲了規避千年蟲問題，標準要求至少使用四位數來表示年份，形如 "YYYY"。這樣可以表示 0000 至 9999 的年份，其中 0000 意爲公元前 1 年，如同天文紀年。不過這並不完全適用於 1583 年之前的年份。標準規定「0000 至 1582 的年份僅應在雙方有共識時用於通信」。

若要表示前 1 年之前或 9999 年之後的年份，標準也允許有共識的雙方擴展表達方式。雙方應事先規定增加的位數，並且年份前必須有正號「+」或負號「-」而不使用「AD/BC」或「CE/BCE」表示之。依據標準，若年份帶符號，則前 1 年爲 "+0000"，前 2 年爲 "-0001"，依此類推。

日曆日期

月份和日各使用兩位數字表示。月份在 01 到 12 之間，日期在 01 到 31 之間。表示日期的基本格式爲 "YYYYMMDD"，擴展格式爲 "YYYY-MM-DD"。例如，1919 年 8 月 10 日可以表示爲 "19190810" 或 "1919-08-10"。

標準也允許更低的精度。例如 "1919-08" 表示 1919 年 8 月 (不可以表示爲 "191908" 以防止有人理解爲 2019 年 19 月 8 日)，"1919" 表示 1919 年，"191" 表示 1910 年代，"19" 表示二十世紀。表示二十一世紀的某年時，可以省去年份的前兩位，形如 "YYMMDD"，相當於 "20YY-MM-DD"。

順序日期表示法

完全表示：可以將一年內的天的序數用 3 位數字表示，平年 365 天，閏年 366 天。如 2004 年 5 月 3 日可以表示為 2004-124 或 2004124。

星期日曆表示法

可以用 2 位數表示年內第幾個日曆星期，再加上一位數表示日曆星期內第幾天，但日曆星期前要加上一個大寫字母 W，如 2004 年 5 月 3 日可寫成 2004-W19-1 或 2004W191。但 2005-W011 是從 2005 年 1 月 3 日開始的，前幾天屬於上年的第 53 個日曆星期。每個日曆星期從星期一開始，星期日為第 7 天。

第一個日曆星期有以下四種等效說法：
1，本年度第一個星期四所在的星期；
2，1 月 4 日所在的星期；
3，本年度第一個至少有 4 天在同一星期內的星期；
4，星期一在去年 12 月 29 日至今年 1 月 4 日以內的星期；

推理可得，如果 1 月 1 日是星期一、星期二、星期三或者星期四，它所在的星期就是第一個日曆星期；如果 1 月 1 日是星期五、星期六或者星期日，它所在的星期就是上一年第 52 或者 53 個日曆星期；12 月 28 日總是在一年最後一個日曆星期。

日曆星期表示法

可以用 2 位數表示本年內第幾個日曆星期，但日曆星期前要加上一個大寫字母 W。
其他規定同星期日曆表示法。

例如，如 2004 年第 19 個星期可寫成：2004-W19 或 2004W19。



日期時間表示法

只使用數字為基本格式。使用冒號「:」間隔開小時、分、秒的為擴展格式。小時、分和秒都用 2 位數表示。

對於當地時間 15 時 27 分 46 秒，


* 完全表示：152746 或 15:27:46

* 預設小時的特定分和秒：-2746 或 - 27:46

* 降低精度僅有小時和分：1528 或 15:28

* 預設小時的特定分：-28

* 預設日的特定小時：15

* 帶有小數的當地時間的完全表示：152735.5 或 15:27:35.5

* 預設小時的分，帶有小數的秒：-2735.5 或 - 27:35.5

* 午夜，一日的開始：完全表示為 000000 或 00:00:00；僅有小時和分表示為 0000 或 00:00

* 午夜，一日的終止：完全表示為 240000 或 24:00:00；僅有小時和分表示為 2400 或 24:00

* 如果時間在零時區，並恰好與協調世界時相同，那麼（不加空格地）在時間最後加一個大寫字母 Z。Z 是相對協調世界時時間 0 偏移的代號。如下午 2 點 30 分 5 秒表示為 14:30:05Z 或 143005Z；只表示小時和分，為 1430Z 或 14:30Z；只表示小時，則為 14Z 或 14Z。

* 其他時區用實際時間加時差表示，當時的 UTC+8 時間表示為 22:30:05+08:00 或 223005+0800，也可以簡化成 223005+08。



日期和時間的組合表示法

合併表示時，要在時間前面加一大寫字母 T，如要表示東八區時間 2004 年 5 月 3 日下午 5 點 30 分 8 秒，可以寫成 2004-05-03T17:30:08+08:00 或 20040503T173008+08。



時間段表示法

如果要表示某一作為一段時間間隔，前面加一大寫字母 P，但時間段後都要加上相應的代表時間的大寫字母。如在一年三個月五天六小時七分三十秒內，可以寫成 P1Y3M5DT6H7M30S。



時間間隔表示法

從一個時間開始到另一個時間結束，或者從一個時間開始持續一個時間間隔，要在前後兩個時間（或時間間隔）之間放置斜線符「/」。格式為以下中的一種：

```
<起始時間>/<結束時間>
<起始時間>/<時長>
<時長>/<結束時間>
<時長>
```

例如 19850412/19860101，19850412/P6M



循環時間表示法

前面加上一大寫字母 R，格式為：

如要從 2004 年 5 月 6 日北京時間下午 1 點起時間間隔半年零 5 天 3 小時循環，且循環 3 次，可以表示為 R3/20040506T130000+08/P0Y6M5DT3H0M0S。

如以 1 年 2 個月為循環間隔，無限次循環，最後循環終止於 2025 年 1 月 1 日，可表示為 R/P1Y2M/20250101



對應的各地標準


* 中華民國國家標準 CNS 7648《資料元件及交換格式－資訊交換－日期及時間表示法》與 ISO 8601:2004 等效採用。

* 中華人民共和國國家標準 GB/T 7408-2005《數據元和交換格式 信息交換 日期和時間表示法》與 ISO 8601:2000 等效採用。

 



參考文獻