Posix
/etc/shadow 中的時間戳編號是如何計算的?
在我的系統上,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 個月的固定甚至不可知的長度。)