Linux time() localtime() mktime()函式
函式簡介
函式名: time
標頭檔案:time.h函式原型:time_t time(time_t * timer)
功能: 獲取當前的系統時間,返回的結果是一個time_t型別,其實就是一個大整數,其值表示從CUT(Coordinated Universal Time)時間1970年1月1日00:00:00(稱為UNIX系統的Epoch時間)到當前時刻的秒數。然後呼叫localtime將time_t所表示的CUT時間轉換為本地時間(我們是+8區,比CUT多8個小時)並轉成struct tm型別,該型別的各資料成員分別表示年月日時分秒。
補充說明:time函式的原型也可以理解為 long time(long *tloc),即返回一個long型整數。因為在time.h這個標頭檔案中time_t實際上就是:
#ifndef _TIME_T_DEFINED
typedef long time_t; /* time value */
#define _TIME_T_DEFINED /* avoid multiple defines of time_t */
#endif
即long。
#include <stdio.h>
#include <time.h>
int main(int argc, char **argv)
{
time_t now;
struct tm *tmlocal;
/*獲取日曆時間*/
time(&now);
tmlocal = localtime(&now);
printf("%s時間為:\t%s", tmlocal->tm_zone, asctime(tmlocal));
return 0;
}
*******************************************
CST時間為: Tue Jan 31 09:23:17 2012
mktime(將時間結構資料轉換成經過的秒數)表頭檔案
#include<time.h>
定義函式
time_t mktime(strcut tm * timeptr);
函式說明
mktime()用來將引數timeptr所指的tm結構資料轉換成從公元1970年1月1日0時0分0 秒算起至今的UTC時間所經過的秒數。
返回值
返回經過的秒數。
範例
/* 用time()取得時間(秒數),利用localtime()
轉換成struct tm 再利用mktine()將struct tm轉換成原來的秒數*/
#include<time.h>
main()
{
time_t timep;
strcut tm *p;
time(&timep);
printf(“time() : %d \n”,timep);
p=localtime(&timep);
timep = mktime(p);
printf(“time()->localtime()->mktime():%d\n”,timep);
}
執行
time():974943297
time()->localtime()->mktime():974943297