開發者工具·Unix時間戳轉換器
並非每個紀元都是 1970:NTP、Windows FILETIME、GPS 和 Excel 日期
· 背景
時間戳 資料格式 偵錯
Unix 的 1970 起源只是眾多起源之一。這篇文章調查了您將在檔案和協議中遇到的紀元(1900、1601、1904、1980、2001),並展示如何識別根本不是 Unix 時間的值。
落在 1900 中的時間戳記 — 來自網路擷取的值,任何單位選擇都無法使其有意義
封包擷取中的數字可能會在秒和毫秒內產生無意義的結果,因為單位不是唯一的隱藏參數。 Epoch 表示選定的零點; Unix 使用 1970,而另一個協定可能會從其他地方計數。重新縮放無法修復錯誤的原點。
當兩個 ToolAcre 讀數與已知事件時間衝突時,停止切換。確定欄位名稱、生產者、協定版本和記錄來源。不斷刪減數字直到出現可信的年份,將調查轉化為巧合。
當出現合理日期但與周圍事件衝突時,適用相同的診斷。合理性是一項薄弱的檢查;出處和已知的參考事件更強。
NTP 和 1900 — 自 1900-01-01 起的秒數,帶有 32 位分數,以及它帶來的 2036 翻轉
此工作簿提供了 NTP 的起源、分數佈局和滾動日期。 Unix 轉換器中沒有實作或測試任何內容,因此本文不證明這些細節。網路擷取必須根據傳送者和解析器使用的協定檔案進行解碼。
只有在匯出 Unix 秒後,該值才應輸入此工具。保留紀元或翻轉上下文,因為一個固定寬度欄位可能無法單獨識別它。假設時代的完美 UTC 結果可能內部一致,但外部錯誤。
協定欄位也可以拆分整數和分數部分。在沒有指定比例的情況下將它們連接或十進制化會創建一個新的數字,這不是相容解碼器想要的。
NTP 轉換詳細資料和翻轉行為需要來源文件,此處不存在
同樣,指定的 Windows 和 .NET 計數器不是可接受的模式。儲存庫不包含其起源或刻度範圍的常數。在開發人員嘗試轉換之前,它們的大十進制值可能會超出 JavaScript 的精確整數範圍。
使用基於平台檔案定義的整數安全庫,將原始資料保留為文字或寬整數,然後發出 Unix 值。不要減去記住的浮點偏移。當來源解析度精細於毫秒時,低端的精確度就很重要。
往返測試應包括具有非零亞秒數的值。整秒裝置無法揭露 100 奈秒或毫秒餘數是否被正確保留。
FILETIME 和 .NET 定義不是由 ToolAcre 實現的,也不是從記憶體中斷言的
電子表格日期引入了不同的表示形式:由工作簿日期系統設定解釋的數字序列。此工作簿的 1900 怪癖和較舊的 Mac 宣告需要電子表格來源,此處未建立。 ToolAcre 不會讀取工作簿元資料。
使用電子表格感知工具檢查檔案,確定配置的日期系統並使用該庫保留小數日精度。將序列視為 Unix 秒可能會產生一個早期的 1970 日期,看起來像一個普通的比例錯誤,而實際問題是原點和單位在一起。
工作簿設定可以隨檔案一起移動,因此兩個視覺上相似的連續劇可能使用不同的來源。轉換屬於元資料可用的檔案邊界。
電子表格序列系統和怪癖需要電子表格特定的證據
大綱中命名的 GPS 和 Apple 相關紀元也在實作之外。它們的關係可能涉及超出恆定原點變化的尺度約定。如果沒有權威證據,這裡不會發布當前的抵消或轉換公式。
一般診斷仍然傳輸:識別零、刻度持續時間和來自生產者的跳躍約定。然後使用適當的庫進行轉換,並根據同一資料集中的已知時間戳進行驗證。三個獨立的事實比小數寬度的猜測更安全。
對於跨越約定,謹慎尤為重要。適用於一種規模和日期的常數可能並不是每對系統之間的永恆關係。
GPS 和 Apple 曆元關係需要本模組以外的權威來源
可防禦的工作方法從已知時刻開始,例如 ToolAcre 驗證的 `2025-02-03T10:23:00.000Z`,等於 1,738,578,180 Unix 秒。對於另一個有記錄的紀元,使用該系統的官方起源和整數算術比例來計算其值,然後使用相同的定義將其轉換回來。
將往返行程與 Unix ISO 字串進行比較並保留推導。本文有意不使用未讀取的常數填入五紀元表。該方法公開了每個假設,並可以根據實際產生資料的任何協議或檔案格式進行審查。
工作方法:跨記錄時代匯出一個瞬間,而不是發布未經驗證的常數
ToolAcre 不會自動辨識或轉換外國紀元。它的單位選單顯示秒和毫秒,兩者都在 config 中的 Unix 定義下。自動偵測僅在 1011 等級的尺度之間進行選擇;它永遠不會改變零點。
這種狹隘的合約可以防止錯誤的信心。如果外部計數碰巧落在可信任的 Unix 日期上,轉換器無法警告來源錯誤。出處必須在算術前輸入。用代碼記錄轉換,而不是依賴手動操作手冊。
可見的自動標籤僅會報告秒或毫秒。它永遠不應該被引用作為發生起源檢測的證據,因為原始碼中不存在這樣的分支。
重點:知道你從哪一個零開始計數——以及 Unix 時間戳轉換器如何清楚地告訴你它讀取的是 Unix 秒或毫秒
了解您從哪個零開始計數、一個刻度有多大以及來源如何處理其時間刻度。只有當這些問題解決到 1970 UTC 以來的秒或毫秒後,Unix 轉換器才會回答。它無法從一個整數推斷語意。
使用難以置信的雙重讀數作為調查起源的信號,而不是作為繼續嘗試除數的許可。一旦來源轉換產生 Unix 值,ToolAcre 就會提供有用的獨立 UTC 和本地健全性檢查,同時保持自己的假設可見。
一個好的適配器會命名外部類型,執行單一來源轉換並發出一個品牌 Unix 值。此設計可防止原始計數器洩漏到通用日期建構函數中。