ISO 8601

關於日期、時間表示方法的國際標準

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

日期及時間的表示法 [重新整理]
日期2024-12-26
UTC日期與時間2024-12-26T22:56:20+00:00
2024-12-26T22:56:20Z
20241226T225620Z
週數2024-W52
日期與週數2024-W52-4
無年份標示之日期--12-26[1]
當年度累積日數2024-361

基本原則

編輯
  • 時間日期按照年月日時分秒的順序排列,大時間單位在小時間單位之前。除了公元前的時刻外,用本標準表示的兩個時刻中較早者在字典序上先於較晚者。這個特性有利於按時間排序。
  • 每個時間單位的位數固定,不足時於左補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"表示1910年代,"19"表示二十世紀。表示二十一世紀的某年時,ISO 8601:2000允許省去年份的前兩位,形如"YYMMDD",相當於"20YY-MM-DD",但是ISO 8601:2004禁止了這種表示方式。

順序日期表示法

編輯

完全表示:可以將一年內的天的序數用3位數字表示,平年365天,閏年366天。如2004年5月3日可以表示為2004-1242004124

星期日曆表示法

編輯

使用年份和星期表示某一日期的格式形如YYYYWwwD或YYYY-Www-D,YYYY表示年份,其值與年月日格式中的年份略有差別;Www表示該日期所屬星期是今年的第幾個星期,範圍在W01到W53之間;D表示該日是本星期的第幾天,範圍在1到7之間,每個星期以周一作爲第一天。例如1926年8月17日可寫成1926-W33-2或1926W332。

每年的第一個星期可以用如下方法決定: 1,本年度第一個星期四所在的星期; 2,1月4日所在的星期; 3,本年度第一個至少有4天在同一星期內的星期; 4,星期一在去年12月29日至今年1月4日以內的星期;

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

日曆星期表示法

編輯

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

例如,如2004年第19個星期可寫成:2004-W192004W19

日期時間表示法

編輯

只使用數字為基本格式。使用冒號「:」間隔開小時、分、秒的為擴充格式。小時、分和秒都用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:05Z143005Z;只表示小時和分,為1430Z或14:30Z;只表示小時,則為14Z或14Z。
  • 其他時區用實際時間加時差表示,當時的UTC+8時間表示為22:30:05+08:00223005+0800,也可以簡化成223005+08

日期和時間的組合表示法

編輯

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

時間段表示法

編輯

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

時間間隔表示法

編輯

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

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

例如19850412/19860101,19850412/P6M。

迴圈時間表示法

編輯

前面加上一大寫字母R,格式為:

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等效採用。


參考文獻

編輯
  1. ^ last in ISO8601:2000, in use by RFC 6350 - vCard Format Specification. IETF. August 2011 [2016-06-29]. (原始內容存檔於2016-05-31). Truncated representation, as specified in [ISO.8601.2000], Sections 5.2.1.3 d), e), and f), is permitted. 
  NODES
Done 1