mktime()函式使用
阿新 • • 發佈:2018-11-11
原型:time_t mktime(struct tm *)
其中的tm結構體定義如下:
struct tm { int tm_sec;/* 秒 - 取值區間為[0,59] */ int tm_min; /* 分 - 取值區間為[0,59] */ int tm_hour; /* 時 - 取值區間為[0,23] */ int tm_mday; /* 一個月中的日期 - 取值區間為[1,31] */ int tm_mon; /* 月份 (從一月開始,0代表一月) - 取值區間為[0,11] */ int tm_year; /* 年份,其值等於實際年份減去1900 */ int tm_wday; /* 星期 - 取值區間為[0,6],其中0代表星期天,1代表星期一,以此類推 */ int tm_yday; /* 從每年的1月1日開始的天數 - 取值區間為[0,365],其中0代表1月1日,1代表1月2日,以此類推 */ int tm_isdst; /* 夏令時識別符號,實行夏令時的時候,tm_isdst為正。不實行夏令時的時候,tm_isdst為0;不瞭解情況時,tm_isdst()為負. */ };
我們只要給出年月日時分秒,然後用mktime()就可以,獲取的星期存在tm_wday中。
貌似日期寫錯了也會自動換過來,比如寫個1月32號會自己換成2月1號,很強大。
表頭檔案 #include
定義函式
time_t mktime(struct tm *timeptr);
函式說明
mktime()用來將引數timeptr所指的tm結構資料轉換成從公元1970年1月1日0時0分0秒算起至今的UTC時間所經過的秒數。
返回值
返回經過的秒數。
範例
/* 用time()取得時間(秒數),利用localtime() 轉換成struct tm再利用mktime()將struct tm裝換成原來的秒數 */ #include #include main() { time_t timep; struct tm *P; time(&timep); printf("time() : %d\n", timep); p = localtime(&timep); timep = mktime(p); printf("time()->localtime()->mktime():%d\n", timep); //獲取時間差 struct tm tnNormal; time_t tNormal; tNormal.year = 2010-1900; tNormal.tm_mon = 1-1; tNormal.tm_mday = 1; tNormal.tm_hour = 0; tNormal.tm_min = 0; tNormal.tm_sec = 0; tNormal.tm_isdst = 0; tNormal = mktime(&tmNormal); time_t tcur = time(0); long defferent = difftime(tcur, tNormal); } 執行 time():974943297 time()->localtime()->mktime():974943297