ISO 8601

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

**基本原則**
時間日期按照年月日時分秒的順序排列，大時間單位在小時間單位之前。除了公元前的時刻外，用本標準表示的兩個時刻中較早者在字典序上先於較晚者。這個特性有利於按時間排序。
*每個時間單位的位數固定，不足時於左補0。
*本標準提供兩種方法來表示時間：其一為衹有數字的基礎格式；其二為添加分隔符的擴展格式，從而更易讀。標準原文建議“應避免在純文本中使用基礎格式”。擴展格式使用連字符“-”來分隔日期，使用冒號“:”來分隔時間。比如2009年1月6日在擴展格式中可以寫成"2009-01-06"，在基本格式中可以簡單地寫成“20090106”而不會產生歧義。
*精度不足時，可以從右側開始忽略日期或時間的某個單位。比如2004年5月可以表示為“2004-05”（第五個月）。這種格式永遠不會表示2004年未指定月份的第5天，也不會表示從2004年至2005年。
*實際運用中需要更高的精度時，可以在秒數後添加十進制小數。

**日期表示法**
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”表示二十世紀的第二個十年，“19”表示二十世紀。表示二十一世紀的某年時，ISO 8601:2000允許省去年份的前兩位，形如“YYMMDD”，相當於“20YY-MM-DD”，但是ISO 8601:2004禁止了這種表示方式。

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

**星期日曆表示法**
使用年份和星期表示某一日期的格式形如YYYYWwwD或YYYY-Www-D，YYYY表示年份，其值與年月日格式中的年份略有差別；Www表示該日期所屬星期是今年的第幾個星期，範圍在W01到W53之間；D表示該日是本星期的第幾天，範圍在1到7之間，每個星期以週一作為第一天。例如1926年8月17日可寫成1926-W33-2或1926W332。
每年的第一個星期可以用如下方法決定：
# 本年度第一個星期四所在的星期；
# 1月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等效採用。

**參考文獻 ==