Posix

/etc/shadow 中的時間戳編號是如何計算的?

  • December 16, 2019

在我的系統上,shadow 的手冊頁以這種方式定義了第三列值:

上次更改密碼的日期,以自 1970 年 1 月 1 日以來的天數表示。

我有一個範例值“17050”。passwd -S說這是“2016-09-06”。但自 1970 年以來的秒數是“1473112800.0”。當我計算 1473112800.0/(606024) 時,我得到“17049.9166666666”。

“17050”是怎麼計算出來的?它是四捨五入還是總是下一個更大的整數?

檢查原始碼(對於 Debian 版本),它只是使用整數除以24 × 3600進行縮放,所以它被截斷了。

請注意,您的計算值正好是兩個小時,這可能可以通過時區變化來解釋。

自紀元以來,這是幾天,而不是幾秒鐘。

$ date -I -d '1970-01-01 + 17050 days'
2016-09-06

(作為旁注,從技術上講,您不能以秒為單位表示“從現在起 365 天”;由於閏秒,天數沒有超過 6 個月的固定甚至不可知的長度。)

引用自:https://unix.stackexchange.com/questions/393841