知識 · 日期與時間
UTC 與時區如何運作
簡答
UTC(世界協調時間)是所有民用時區定義所依據的參考時鐘。時區是使用相同當地時間的區域,以與 UTC 的時差表示,例如 -05:00 或 +05:30,並附帶日光節約時間何時開始、何時結束的規則。時差範圍從 -12:00 到 +14:00,有些還不是整數小時。
UTC 是什麼
UTC 由國際度量衡局(BIPM)根據全球數百座原子鐘計算而來。它以國際單位制的秒計時,與國際原子時(TAI)相同,但偶爾會加入閏秒調整,讓它與地球自轉的差距保持在 0.9 秒以內。自 2017 年起,UTC 比 TAI 慢 37 秒。
UTC 不實施日光節約時間,也不會隨季節改變。正因為如此穩定,伺服器、記錄檔、航空器和資料庫都以它為準。
UTC 與 GMT 的差別
日常使用中,GMT 和 UTC 顯示的時間相同,但兩者並不是同一件事:
| UTC | GMT | |
|---|---|---|
| 本質 | 以原子鐘為基礎的時間標準 | 歷史上是格林威治的天文時間;如今是一個時區名稱 |
| 時差 | 依定義就是零點 | UTC+00:00 |
| 日光節約時間 | 永遠沒有 | GMT 本身沒有,但英國夏季會從 GMT 改用 BST(UTC+01:00) |
| 在軟體中的用法 | 標準參考 | 大多只當作標籤;建議使用 UTC |
實務上的陷阱:「倫敦時間」只有在冬季才等於 GMT。從 3 月最後一個星期日到 10 月最後一個星期日,倫敦比 UTC 快一小時。
時差不等於時區
+01:00 這樣的時差描述的是某一個時刻。時區描述的則是一個地方隨時間的變化:它的時差、日光節約時間規則,以及這些規則的所有歷史變動。Linux、macOS、Android、Java 和各大瀏覽器所使用的 IANA 時區資料庫,以地區和城市命名時區,例如 Europe/London、America/New_York 和 Asia/Kolkata。
處理任何未來或過去的時間時,Europe/London 都比 +00:00 好,因為它知道 1 月的時差是 +00:00、7 月是 +01:00。以 +00:00 儲存的定期會議,一年中有半年會差一小時。
- 過去的時刻以 UTC(或 Unix 時間戳記)儲存。
- 未來的在地活動以當地時間加上 IANA 時區名稱儲存,需要時再算出 UTC 時刻,因為政府可能在短時間內修改日光節約時間規則。
- 避免使用
CST或IST這類縮寫:CST可能是美國中部標準時間(UTC-6)或中國標準時間(UTC+8),IST則同時用於印度、愛爾蘭和以色列。
日光節約時間
日光節約時間(DST)會在一年中的部分期間把時鐘調快,通常是一小時。各地區的日期不同:美國在 3 月第二個星期日調快、11 月第一個星期日調回;歐盟則在 3 月和 10 月的最後一個星期日切換,各地都在 01:00 UTC 進行。亞洲和非洲多數國家不實施日光節約時間,包括中國、日本和印度。在南半球,日光節約時間大約從 10 月實施到 4 月。
每次切換都會產生兩種邊界情況:
- 空缺:時鐘調快時,在從 02:00 直接跳到 03:00 的時區,當天的 02:30 等當地時間根本不存在。
- 重疊:時鐘調回時,01:30 這樣的時段會出現兩次,所以只有當地時間而沒有時差,就無法判斷是哪一次。
特殊時差
並非每個時區與 UTC 都相差整數小時。以下都是目前仍在使用的時差:
| 時差 | 時區範例 | 地區 |
|---|---|---|
-12:00 | Etc/GMT+12 | 無人居住的貝克島與豪蘭島;最晚的時差 |
-03:30 | America/St_Johns | 加拿大紐芬蘭(標準時間) |
+05:30 | Asia/Kolkata | 印度與斯里蘭卡 |
+05:45 | Asia/Kathmandu | 尼泊爾 |
+09:30 | Australia/Darwin | 澳洲北領地 |
+12:45 | Pacific/Chatham | 紐西蘭查塔姆群島(標準時間) |
+14:00 | Pacific/Kiritimati | 吉里巴斯萊恩群島;全球最早進入新一天的地方 |
由於時差橫跨 26 小時,同一個日曆日期在地球上某處存在的時間最長可達約 50 小時。「14 日當天結束前」必須指明時區才有精確意義。
常見問題
UTC 和 GMT 一樣嗎?
兩者顯示的時鐘時間相同,但 UTC 是原子時間標準,GMT 是時區。英國只在冬季使用 GMT,夏季改用 BST(UTC+01:00)。
UTC 會因日光節約時間而改變嗎?
不會。UTC 全年不變;只有各地時區會在日光節約時間開始或結束時,調整與 UTC 的時差。
印度為什麼使用 UTC+05:30?
印度只用一個時區,以東經 82.5° 的子午線為中心,與格林威治相差五個半小時。採用半小時或十五分鐘的時差,是為了更貼近一個國家的經度。
Etc/GMT+12 的正負號是什麼意思?
在 IANA 的 Etc/GMT 名稱中,為了相容 POSIX,正負號是相反的,所以 Etc/GMT+12 其實是 UTC-12:00。實際地點請優先使用 Asia/Tokyo 這類以城市命名的名稱。