跟 1900, 1970 的沒有關係。
1970 是因為 unix 系統內部用一個 variable - 秒數 代表時間。
而不是用 日期,
為了有效利用,把那個 variable 的 0 定義成 1970, 1,1,0:00:00
所以在轉換 unix system 內部的 time variable (系統秒數) 時,才要把 utc - 1970 。
但是很有趣(?) 的是,libc 中,用來表示日期時間的 structure tm,
其中的 "tm_year",代表的是 從 1900 開始計算的年。
其中的 "tm_mon",是 0-11,不是 1-12。
所以在拿到 utc 時間,填入 struct tm 時,要修正一下 tm_year, tm_mon:
tt.tm_year -= 1900;
tt.tm_non -= 1;
然後丟進 mktime(struct tm*)
-- 會 return 從 1970/1/1:00:00:00 到該日期的秒數。
沒有留言:
張貼留言