繁體中文

開發者工具·Unix時間戳轉換器

時區不是偏移:IANA tz 資料庫及其重要性

· 背景

時間戳 時區 瀏覽器 API

命名區域路徑在兩個瞬間產生不同的偏移量
原始 ToolAcre 向量圖

偏移量是一個數字;時區是數字的歷史及其變化的規則。這篇文章解釋了其中的差異,介紹了對其進行編碼的 IANA tz 資料庫,並說明了轉換器依賴它進行本地讀取的原因。

移動了一個小時的會議 — 儲存的 +02:00 偏移量在 7 月是正確的,在 12 月是錯誤的

在 7 月會議旁邊保存的固定 `+02:00` 可能是當時的忠實閱讀,但通常在 12 月仍然會失敗。偏移量是一個結果;區域是能夠在不同日期產生結果的規則上下文。將其中一個儲存為另一個會凍結快照。

ToolAcre 的本機行要求 Intl 格式化每個日期並請求一個短數字偏移量。它不會為紀元添加配置常數。這種設計允許環境的適用規則分別影響每個瞬間。

偏移量與區域 — 距 UTC 的固定距離與具有 DST 規則和更改歷史記錄的命名區域

偏移量表示渲染時脈在某一時刻與 UTC 的距離有多遠。一個命名區域可以攜帶一系列偏移規則和歷史變更。時代本身兩者都沒有。當應用程式同時需要事件和基於地點的時間表時,這些概念應該佔據不同的欄位。

對於不可變事件,儲存瞬間可能就足夠了。對於“每天在此區域的 09:00 開放”,請保留指定區域,因為將來的實例必須從掛起時間解析。重複使用昨天的偏移量會將動態規則視為永久數字屬性。

IANA tz 資料庫 — 區域/City 名稱、為什麼它是政治決策的記錄以及更新頻率

此工作簿命名為 IANA 資料庫、政治來源和更新頻率。此實作報告來自 `resolvedOptions()` 的 IANA 樣式區域名稱,但不公開資料庫版本、更新計畫或來源套件。這些細節在此不予斷言。

此限制會影響複製。如果機器之間的舊日期輸出不同,請記錄區域字串和平台版本;不要僅從時脈來斷言哪個規則集更新。命名區域改善了這個問題,但轉換器不是時區資料檢查器。

需要可重現歷史輸出的應用程式應控制其區域資料依賴性並測試代表性日期。依賴未指定的瀏覽器環境代表了這種再現性。

此實作不會公開命名區域規則來源和更新節奏

ToolAcre 透過 Intl 向瀏覽器詢問其本地區域和格式。儲存庫無法確定規則是否來自作業系統、瀏覽器套件或其他執行時間元件。它捕獲故障並安全回退,而不是暴露內部架構。

因此,「本地」是指瀏覽器在轉換時所選擇的環境。更改裝置設定可以更改輸出,而無需更改紀元。對於審計跟踪,保留 UTC 和原始計數;使用本地顯示作為上下文而不是規範存儲。

格式化程式故障時回退到 ISO 會保留瞬間,但會遺失所要求的本機簡報。消費者應將其視為顯示上下文的減少,而不是日期的變更。

瀏覽器選擇並格式化其本地區域;其規則的來源未被斷言

選擇兩個相隔六個月的 UTC 時刻,例如 `2025-01-15T12:00:00Z` 和 `2025-07-15T12:00:00Z`,將它們轉換為秒,然後檢查一台裝置上的本地行。記錄數位偏移量是否不同。觀察結果對於顯示的區域和環境有效。

工作簿規定了 Europe/Berlin 偏移量,但這些命名區域規則並未從實作中讀取。這種可重複的練習避免了不支援的表,同時教導相同的區別:一個區域查詢、兩個時刻以及可能的兩個偏移結果。

如果偏移量匹配,則觀察結果仍然提供資訊:配置的區域在該環境中的那些選定時刻沒有暴露季節性差異。

工作範例:在兩個日期觀察一個瀏覽器區域,而不是硬編碼柏林規則

專家小組要求 `timeZoneName: "shortOffset"`,它支援數位關係,例如 GMT+1 而不是區域縮寫。這種選擇減少了對標籤的依賴,標籤的含義可能因上下文而異,儘管準確的 Intl 格式仍然是平台輸出。

對於儲存的資料,使用由應用程式選擇的庫定義的規範區域標識符,而不是顯示縮寫。面向使用者的短標籤可能會有所幫助,但它不應該成為重建未來時間表的關鍵。

數字偏移在某一時刻作為算術保持明確。它們的限制在於缺少規則標識,而不是無法將一個時鐘讀數映射回 UTC。

儲存的資料中避免使用縮寫;格式化程式請求一個短數字偏移量

重複的未來調度需要間隙、重疊和策略處理,而此轉換器不提供。它以已解決的日期或紀元開始並呈現它。它不會在兩個重複的本地時間之間進行選擇,也不會修復不存在的本地時間。

使用區域感知調度庫,其行為已根據您的要求進行測試,然後在此處檢查已解決的事件(如果有幫助)。將解析度與顯示分開可以防止簡單的轉換器意外成為具有未定義邊緣策略的調度程序。

然後,調度程序的輸出可以儲存為一個紀元以供執行,同時保留區域和原始掛機時間意圖以供將來重新計算或解釋。

重點:將瞬間儲存為紀元,將地點儲存為區域名稱 - 以及 Unix 時間戳轉換器如何使用瀏覽器的區域進行本地讀取

將時刻儲存為明確的紀元單位或規範的 UTC 字串,並在位置本身很重要時儲存命名區域。偏移量可以伴隨輸出進行解釋,但它不能取代任一欄位。 ToolAcre 的 UTC 行和本機行證明了這種分離。

當本地結果令您驚訝時,請在更改資料之前檢查區域標籤、即時和偏移量。固定偏移補丁可能會使一個日期看起來正確,而另一個日期看起來錯誤。耐用的模型使事件保持穩定,並讓經過驗證的區域規則為其鐘面提供支援。

此模型也支援旅行:使用者可以在新的本地區域中查看一個儲存的瞬間,而無需重寫事件或遺失其原始調度上下文。