開發者工具·Unix時間戳轉換器
一個時間戳,兩個時脈:為什麼 UTC 和本地時間在一個紀元內不同
· 工作原理
時間戳 unix 時間 時區
紀元值命名一個時刻,但您看到的掛鐘時間取決於您所在的位置。這篇文章解釋了偏移算術、為什麼日期本身可能不同,以及為什麼轉換器會顯示兩個讀數。
客戶說 9 上午,日誌顯示 16:00 — 同一事件、兩個時鐘和一張無濟於事的支持票
當有人報告「早上九點」而應用程式日誌記錄 16:00 時,支援案例可能會陷入停滯。在知道事件的区域或偏移量之前,這两個時钟標籤都不會識別事件。如果兩個引用解析為同一紀元,則搜尋七小時的處理延遲會浪費對顯示差異的調查。
首先收集原始時間戳記和每個觀察者的區域上下文。 ToolAcre 顯示 UTC 和一次轉換的當前瀏覽器本地讀數,因此對於持有日誌的人來說,可以立即進行比較。其他地方的同事應該比較共享的 ISO 值,而不是假設第一個人的本地行適用於他們的機器。
纪元是一個瞬間,而不是挂钟時間 - 自 1970 以來没有自己的区域的秒數
纪元是距 1970-01-01T00:00:00Z 的距离(以秒或毫秒為單位)。它不包含城市、夏令時標志或首選時钟符号。因此,值 1,700,000,000 標識一個時刻;週二晚上或週三早上等標籤是在選擇如何閱讀該時刻後做出的預測。
這就是為什么存儲校正後的“本地纪元”是一個類別錯誤。新增偏移量會更改另一時刻的計數和點。儲存或傳輸原始時刻,然後在人們需要日曆的邊緣應用讀取規則。 ToolAcre 透過在格式化輸出旁邊保留數字秒和毫秒來遵循該形狀。
如何應用偏移量 — 增加或減去小時和分鐘、半小時和 45 分鐘區域以及一年中變化的偏移量
對於固定偏移量,算術很簡單:UTC+09:00 顯示時鐘比 UTC 早 9 小時,而 UTC−05:00 顯示落後 5 小時。一小時的小數部分是按分鐘處理,因此四十五分鐘的偏移量不能安全地通過四捨五入到整數小時來表示。此標誌屬於顯示的本地讀數。
固定偏移量仍然只是一個觀察結果。 ToolAcre 向 Intl 詢問適用於瀏覽器目前區域中所選時刻的偏移。它並不假設今天的抵銷金額適用於全年。因此,將一個偏移量複製到應用程式配置中可能會在測試期間顯得正確,但在環境的適用規則發生變化時會失敗。
當日期也改變時 — UTC 和本地不同日曆日的接近午夜的時刻
時脈運算可以跨越日曆邊界。 00:20 UTC 的時刻出現在前一個日期的負偏移量下,稍後出現在正偏移量下的相同日期。因此,僅記錄“14 日”的票證可以引用 UTC 日志的不同部分,即使两個参與者都准确地記得自己的日歷。
在團隊之間傳遞事件時使用完整的日期、時間和偏移。轉換器的 ISO 行可防止日期與 UTC 分離,而本機行則提供熟悉的上下文。如果事件跨越午夜,請按紀元或 UTC 對條目進行排序,而不是對在多個區域中寫入的人工標籤進行排序。
工作範例:1700000000(UTC)、UTC+9 區域和 UTC−5 區域 — 寫出的算術和比較的日期
現有已發佈的單元文章規定 1,700,000,000 秒為 `2023-11-14T22:13:20.000Z`。在固定的 +09:00 讀數下,增加九個小時即可獲得 2023-11-15 07:13:20;在固定的−05:00下,减去五个小时即可得到2023-11-14 17:13:20。僅東部示例中的日期發生變化。
這兩個偏移讀數是算術演示,而不是有關該日期指定城市的宣告。應允許 ToolAcre 本機行報告 Intl 為實際瀏覽器區域提供的任何偏移。將其與 UTC 值進行比較,並記下顯示的偏移量,而不是將任一說明性值強加到結果上。
工作範例:UTC 中的一個紀元,然後是兩個明確固定偏移讀數
顯示這兩個讀數可以消除調試過程中的精神減法。伺服器團隊可以引用 UTC,而重現問題的人可以識別他們看到的本地時鐘。由於兩行都源自於一個日期,因此匹配的秒和毫秒證明它們沒有被獨立編輯或舍入為單獨的事件。
該對在螢幕截圖中特別有用:包括單位註釋和 ISO 行,而不是裁剪為熟悉的本地值。旅行或區域設定變更後,可以重新解釋裁剪後的時鐘。紀元加上 ISO 保持穩定,本地渲染解釋了使用者體驗,而無需替換該穩定的參考。
這不包括 - 歷史偏移量變化和政治時區決策,它們存在於 tz 資料庫中而不是算術中
簡單的加法不能描述適用偏移量變化的區域。轉換器將本機格式化委託給 Intl,但其儲存庫不會公開底層規則表或歷史決策。因此,本文不會列出過去的變化、預測未來的政策或承諾攜帶不同資料的引擎具有相同的輸出。
當應用程式必須在此位置調度「09:00」時,請保留指定區域並使用區域感知調度設計。當它必須記錄「這個請求現在發生」時,請保留一個瞬間。這些是不同的資料要求。固定的 `+02:00` 可以描述某一時刻的讀數,而無需識別產生該讀數的區域規則。
固定偏移算術無法重現不斷變化的區域規則
將紀元視為穿過時間線的圖釘,將鐘面視為放置在其周圍的標籤。 UTC 提供通用標籤;本地格式化提供了一種方便的方式。 ToolAcre 在不修改引腳的情況下呈現兩者,這就是為什麼預計會有時間差異而不是損失時間的證據。
對於有爭議的事件,貼上原始計數,明確說明單位,並共享 ISO 輸出。然後僅附加本地讀數作為註釋。這個順序將「我的時鐘與你的時鐘」轉變為可檢查的映射,並防止日期邊界變化偽裝成不同日期的事件。