time_t,該對象中存放的是距離 1970-01-01 00:00:00 +0000 (UTC) 所通過的秒數.數據結構
struct tm,該對象中存放的是具體的日期值,包括年,月,日,時,分,秒,等等.以下:函數
struct tm { int tm_sec; /* 秒數,[0,60],取 60 的緣由是可能存在潤秒的緣故 */ int tm_min; /* 分鐘,[0,59] */ int tm_hour;/* 小時,[0,23] */ int tm_mday;/* 日期數,[1,31] */ int tm_mon;/* 距離一月的月數,[0,11],即當爲0時,代表是 1 月. */ int tm_year;/* 距離 1900 所通過的年數,即當前實際年份爲 tm_year+1900 */ int tm_wday;/* 距離週日的天數,[0,6],即當爲0時,代表是週日 */ int tm_yday;/* 距離 1 月 1 號的天數,[0,365] */ int tm_isdst;/* 是不是夏令時,若<0,代表該域信息不可用,若=0,代表沒有采用夏令時,若>0,代表採用了夏令時 */ };
time(),從內核中取出當前時間,能夠使用 gettimeofday() 獲取更精確的時間.(參考 man 手冊)
spa
gmtime(),localtime(),將 time_t 類型的對象格式化爲 struct tm 類型.(參考 man 手冊)
code
mktime().將 struct tm 類型的對象格式化爲 time_t 類型,該函數具體見下:對象
/** * 將 struct tm 類型格式化爲 time_t 類型. * tm 做爲輸入/輸出參數: * 在輸入時,將忽略 tm_wday,tm_yday 域,而且若 tm_isdst<0,此時 mktime() 內部本身判斷是否使用了夏令時,若 tm_isdst >0,代表採用了夏令時,不然未採用夏令時. * 在輸出時,若 tm_sec,tm_min,...,tm_year 的值超出範圍,則會規範化,如 10月40號會被規範爲 11月9號;tm_wday,tm_yday 會從新計算.tm_isdst 會從新設置代表是否使用了夏令時. * 若 tm 包括的信息沒法轉化爲 time_t 類型,則 tm 各域的值保持不變,而且返回 -1. */ time_t mktime(struct tm *tm);