開發者工具·Unix時間戳轉換器
負 Unix 時間戳記:如何表示 1970 之前的日期
· 工作原理
時間戳 unix 時間 資料格式
Unix 時間從 1970 開始向前計數,但也向後計數。這篇文章解釋了負紀元的意義,-1如何成為1969的最後一秒,以及假設正值的系統在哪裡崩潰。
帶減號的出生日期 — 出生於 1965 的使用者儲存為負整數,以及將其視為錯誤的代碼
在 1970 之前出生的人的記錄可以合法地包含負 Unix 時間戳記。拒絕每個前導減號會將表示選擇轉換為資料遺失錯誤。 ToolAcre 的解析器接受可選符號,並 `fromEpoch` 將低於零的解釋毫秒值標記為 `beforeEpoch`,而不是將其視為無效。
然後顯示會新增一條註釋,解釋該時刻先於 Unix 紀元。這比默默地呈現日期更強大,因為它使審閱者可以看到不尋常的標誌。如果上游模式禁止負數,則失敗屬於該模式或遷移,而不是映射到零兩側的計數的算術。
有符號整數和紀元 - 為什麼 time_t 有符號,以及 -1 和 -86400 對應什麼
零為 1970-01-01T00:00:00.000Z。儲存庫測試證明 -1 第二個是前一個時刻 `1969-12-31T23:59:59.000Z`。同樣,-86,400 秒是零之前的固定 POSIX 天。有符號算術使軸連續,而不需要舊記錄的第二個紀元。
大綱將簽章儲存歸因於 `time_t`,但此程式碼並未建立每個平台使用的設計歷史或類型。它更窄的證據就足夠了:JavaScript 數字可以是負數,檢測使用絕對大小,並日期可以格式化結果。將生產油田的宣告類型與轉換器所接受的輸入分開描述。
在零點附近進行有符號紀元算術,沒有說明為什麼每次 time_t 選擇它的類型
負值保留與正值相同的單位區別。 `−1000` 秒指向紀元之前 1,000 秒,而 `−1000` 毫秒僅指向紀元之前一秒。自動偵測將兩者視為秒,因為它們的大小低於 1011,因此較短的紀元前毫秒計數需要明確毫秒選擇。
這是數字計數民間傳說的具體失敗。開發人員看到減號和四位數字無法從外觀推斷出單位。使用來源合同,選擇選擇器並檢查單元註釋。 ToolAcre 的大小規則是典型資料的預設規則,不能取代接近 1970 的歷史值的元資料。
負值失敗的地方 - 使用 −1 作為哨兵的系統、無符號存儲、夾緊的日期選擇器以及拒絕它們的語言
在轉換器之外,`−1` 有時會保留為缺失值哨兵,且無符號列無法保留任何負時刻。這些是常見的設計可能性,但儲存庫無法證明特定資料庫、日期選擇器或語言的行為。在將檔案日期移過實際邊界之前測試實際邊界。
有用的探針包含三個值:null 或記錄的缺失標記、-1 和明顯較舊的日期。如果 -1 消失而舊值仍然存在,則涉及哨兵處理;如果所有底片都失敗,請檢查類型和驗證。不要透過添加 1970 年或取絕對值來「修復」症狀,因為兩者都會創建不同的時刻。
工作範例:將 −14182940 — 算術轉換為 UTC 和格林威治以西本地區域的 7 月 1969 日期
在 −14,182,940 秒內,從紀元開始向後移動 164 完成 86,400 秒,留下 13,340 秒。剩餘時間為 3 小時、42 分鐘和 20 秒。產生的 UTC 讀數為 `1969-07-20T20:17:40.000Z`,這是專門為本文選擇的即時值。
UTC 以西的本地讀數可能會顯示更早的掛鐘時間甚至另一個日期,但其確切結果取決於瀏覽器區域和國際規則。從小組中閱讀它,而不是發布通用答案。固定驗證是ISO行;本機行是同一負計數的環境註解。
工作範例:使用可驗證的 UTC 算術轉換 −14,182,940
ToolAcre 根據 ±8.64×1015 毫秒(來源中規定的日期範圍)檢查其解釋值。它也證明了 -2,208,988,800 秒到 `1900-01-01T00:00:00.000Z` 的轉換。這些事實表明,該路線早於 1970 到達,但這並不意味著每個儲存系統都可以承載相同的範圍。
帶符號的 32 位元欄位的數學間隔比 JavaScript 日期更窄,但在貼上數字時轉換器不會檢查欄位寬度。在審核中保留來源類型。成功的瀏覽器轉換展示了此處的可表示性,而不是透過其他地方的韌體、SQL 列或二進位協定進行安全往返。
轉換器的日期範圍已知;外部 32 位元限制取決於其儲存類型
將計數轉換為 JavaScript 日期並不會重建幾個世紀前每個位置實際列印的民用日曆。此實作使用平台的日期模型並傳回 ISO 表示;它不包含用於日曆改革的歷史日曆選擇器、區域設定檔案或檔案來源。這些說法是故意不存在的。
對於現代軟體記錄,預測機器表示可能仍然正是您需要的合約。對於家譜、法律歷史或檔案轉錄,請保留原始書面日期及其日曆背景以及任何派生的紀元。方便的可排序數字不應消除轉換無法解決的不確定性。
日曆歷史宣告不在此轉換器的證據範圍內
負數是紀元軸上的方向,而不是錯誤類別。 ToolAcre 解析它,按大小應用相同的秒或毫秒規則,並將結果標記為紀元之前的結果。這種行為可以讓審查者區分合法的舊時刻和其他地方的哨兵或未簽署的儲存故障。
審核 1970 之前的資料時,請在解釋符號之前說明單位、來源類型和缺失值約定。然後將 ISO 結果與已知記錄進行比較。符號本身就是有意義的算術;周圍的模式確定生產者是否打算進行該算術或使用相同的數字作為控制值。