ubuntu 在 R40e 上 還有 Debian 在 Sempron 2600 上

2013年1月3日 星期四

Time, UTC, GMT, epoc , 1970 & 1900

UTC 就是 格林威治時間,是時區的一種。

跟 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 到該日期的秒數。

沒有留言:

標籤

網誌存檔