Unix時間戳是如何處理閏秒的?

時間 2021-06-01 10:31:08

1樓:仲晨

The Unix time number is zero at the Unix epoch, and increases by exactly 86400 per day since the epoch.

正閏秒時,閏秒的unix time就跟後一秒相同;負閏秒時,unix time就會跳過閏秒的那個數字。

按照Single Unix specification的定義,應該是這樣的:

UTC=2008-12-31T23:59:59.0 → seconds_since_epoch=1230940799[.0]

UTC=2008-12-31T23:59:59.5 → seconds_since_epoch=1230940799[.5]

UTC=2008-12-31T23:59:60.0 → seconds_since_epoch=1230940800[.0]

UTC=2008-12-31T23:59:60.5 → seconds_since_epoch=1230940800[.5]

UTC=2009-01-01T00:00:00.0 → seconds_since_epoch=1230940800[.0]

UTC=2009-01-01T00:00:00.5 → seconds_since_epoch=1230940800[.5]

而實際之中有些地方要保證數值的單調增長,會做一些小修改,比如NTP協議中採用:

UTC=2008-12-31T23:59:59.0 → gettimeofday() returns 1230940799.0

UTC=2008-12-31T23:59:59.5 → gettimeofday() returns 1230940799.5

UTC=2008-12-31T23:59:60.0 → gettimeofday() returns 1230940800.0

UTC=2008-12-31T23:59:60.5 → gettimeofday() returns 1230940800.000001

UTC=2009-01-01T00:00:00.0 → gettimeofday() returns 1230940800.000002

UTC=2009-01-01T00:00:00.5 → gettimeofday() returns 1230940800.5

以上來自:The Unix leap second mess

Unix 時間戳為什麼是自 1970 年 1 月 1 日起的絕對時間? 那麼,2023年之前的時間如何用Unix時間戳表示?

我來補充問題的後半截。因為unix時間戳是乙個有符號整數,所以1970年前一百年可以用其負數部分表示。但事實上很少這要使用。因為unix時間戳主要用來表示當前時間或者和電腦有關的日誌時間 如檔案創立時間,log發生時間等 考慮到所有電腦檔案不可能在1970年前創立,所以用unix時間戳很少用來表示1...

大學如何處理自己的時間?

淼淼 大學也是超級忙碌,現在想想可能增加的是面對各種複雜生活問題的淡定吧,越忙越能練習安排時間的能力,多選擇一些開拓平台的活動,另外學習也是很重要的 interesting zhuo 遠離宿舍 加一到兩個自己感興趣的社團,沒必要和每個人都搞好關係,有共同目標的人關係都不會很差。好好學習,保研比考研容...

電鍍廢水是如何處理的?

孜孜不倦防水人 華中表面處理迴圈經濟產業園設立電鍍廢水處理集中區,日均廢水處理能力27000噸 天,擁有國內首家地下綜合管廊,管道連線園區各個廢水區。電鍍廢水處理按鍍種工藝來分,鍍種不同廢水處理工藝不同,從鍍槽的高濃度廢液裡不斷分離解析,最終達標排放。電鍍廢水處理一定是集中處理的,這是電鍍行業發展的...