1. 程式人生 > >Linux time() localtime() mktime()函式

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