C語言中兩種方式表示時間日期值time_t和struct tm類型的相互轉換

來源:互聯網
上載者:User

標籤:time   c語言   字元數組   閱讀   main   原型   日期時間   擷取   oca   

使用gmtime函數或localtime函數將time_t類型的時間日期轉換為structtm類型:

使用time函數返回的是一個long值,該值對使用者的意義不大,一般不能根據其值確定具體的年、月、日等資料。gmtime函數可以方便的對time_t類型資料進行轉換,將其轉換為tm結構的資料方便資料閱讀。

gmtime函數的原型如下:

struct tm *gmtime(time_t*timep);

localtime函數的原型如下:

struct tm *localtime(time_t*timep);

將參數timep所指的time_t類型資訊轉換成實際所使用的時間日期表示方法,將結果返回到結構tm結構類型的變數。

gmtime函數用來存放實際日期時間的結構變數是靜態分配的,每次調用gmtime函數都將重寫該結構變數。如果希望儲存結構變數中的內容,必須將其複製到tm結構的另一個變數中。

gmtime函數與localtime函數的區別:

gmtime函數返回的時間日期未經時區轉換,是UTC時間(又稱為世界時間,即格林尼治時間)。

localtime函數返回當前時區的時間,

轉換日期時間表示形式time_t類型轉換為structtm類型樣本:

#include

#include

int main()

{

    char*wday[]={"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};/*指標字元數組*/

   time_t t;

   struct tm *p;

   t=time(NULL);/*擷取從1970年1月1日零時到現在的秒數,儲存到變數t中*/

   p=gmtime(&t); /*變數t的值轉換為實際日期時間的表示格式*/

   printf("%d年%02d月%02d日",(1900+p->tm_year),(1+p->tm_mon),p->tm_mday);

   printf(" %s ", wday[p->tm_wday]);

printf("%02d:%02d:%02d\n", p->tm_hour,p->tm_min, p->tm_sec);

    return 0;

}

 

注意:p=gmtime(&t);此行若改為p=localtime(&t);則返回當前時區的時間

②     使用mktime函數將structtm類型的時間日期轉換為time_t類型:

表標頭檔

#include

定義函數

time_t mktime(strcut tm *timeptr);

函數說明

mktime()用來將參數timeptr所指的tm結構資料轉換成從公元1970年1月1日0時0分0 秒算起至今的UTC時間所經過的秒數。

傳回值

返回經過的秒數。

 

日期轉換為秒數樣本:

#include

#include

int main()

{

   time_t t;

   struct tm stm;

   printf("請輸入日期時間值(按yyyy/mm/dd hh:mm:ss格式):");

   scanf("%d/%d/%d%d:%d:%d",&stm.tm_year,&stm.tm_mon,&stm.tm_mday,

       &stm.tm_hour,&stm.tm_min,&stm.tm_sec);

stm.tm_year-=1900; /*年份值減去1900,得到tm結構中儲存的年份序數*/

stm.tm_mon-=1;    /*月份值減去1,得到tm結構中儲存的月份序數*/

t=mktime(&stm);  /* 若使用者輸入的日期時間有誤,則函數傳回值為-1*/

if(-1==t)

{

       printf("輸入的日期時間格式出錯!\n");

        exit(1);

}

printf("1970/01/01 00:00:00~%d/%02d/%02d%02d:%02d:%02d共%d秒\n",

   stm.tm_year+1900,stm.tm_mon,stm.tm_mday,

       stm.tm_hour,stm.tm_min,stm.tm_sec,t);

   return 0;

}

 

 

 

轉:http://www.360doc.com/content/11/0720/14/1317564_134702417.shtml

C語言中兩種方式表示時間日期值time_t和struct tm類型的相互轉換

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.