gmtime是把日期和時間轉換為格林威治(GMT)時間的函式。將參數time 所指的time_t 結構中的信息轉換成真實世界所使用的時間日期表示方法,然後將結果由結構tm返回。
基本介紹
- 中文名:gmtime
- 包含頭檔案:time.h
- 功能:返回tm結構的格林尼治時間
- 原型:struct tm *gmtime(time_t *)
定義,舉例,時間,異同點,共同點,不同點,
定義
頭檔案:time.h
調用原型:struct tm *gmtime(const time_t *timeptr)
函式功能:返回tm結構的格林尼治時間(GMT)
tm結構定義:
struct tm{ int tm_sec; //取值[0,59],非正常情況下可到達61 int tm_min; //取值同上 int tm_hour; //取值[0,23] int tm_mday; //取值[1,31] int tm_mon; //取值[0,11] int tm_year; //1900年起距今的年數 int tm_wday; //取值[0,6] int tm_yday; //取值[0,366] int tm_isdst; //夏令時標誌 };
返回值:如上所述
舉例
#include "stdio.h"#include "time.h"#include "stdlib.h"int main(void){ time_t t; struct tm *gmt, *area; tzset(); /*tzset()*/ t = time(NULL); area = localtime(&t); printf("Local time is: %s", asctime(area)); gmt = gmtime(&t); printf("GMT is: %s", asctime(gmt)); return 0;}
時間
localtime的實現
testLocaltime.c---------------------------------------------------------#include <stdio.h>#include <time.h>void cur_time(void);int main(int argc,char **argv){cur_time();return 0;}void cur_time(void){char *wday[]={"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};time_t timep;struct tm *p;time(&timep);p=localtime(&timep); /* 獲取當前時間 */printf("%d year %02d month %02d day",(1900+p->tm_year),(1+p->tm_mon),p->tm_mday);printf("%s %02d:%02d:%02d\n",wday[p->tm_wday],p->tm_hour,p->tm_min,p->tm_sec);}---------------------------------------------------------“gcc testLocaltime.c”後運行結果為:2007 year 12 month 27 day Wednesday 23:30:21
gmtime的實現
testGmtime.c---------------------------------------------------------#include <stdio.h>#include <time.h>void cur_time(void);int main(int argc,char **argv){ cur_time(); return 0;}void cur_time(void){ char *wday[]={"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"}; time_t timep; struct tm *p; time(&timep); p=gmtime(&timep); /* 獲取當前時間 */ printf("%d年%02d月%02d日",(1900+p->tm_year),(1+p->tm_mon),p->tm_mday); printf("%s %02d:%02d:%02d\n",wday[p->tm_wday],(p->tm_hour+8),p->tm_min,p->tm_sec);}-----------------------------------------------------------“gcc testGmtime.c”後運行a.out結果為:2007年12月26日星期三 15:30:21 //注意GMT、UTC均為標準時間,我國位於東八區,因此在原有基礎上減去8
異同點
共同點
這兩個函式採用了time.h中的一個tm結構體定義:
struct tm{ int tm_sec; /* Seconds. [0-60] (1 leap second) */ int tm_min; /* Minutes. [0-59] */ int tm_hour; /* Hours. [0-23] */ int tm_mday; /* Day. [1-31] */ int tm_mon; /* Month. [0-11] */ int tm_year; /* Year - 1900. */ int tm_wday; /* Day of week. [0-6] */ int tm_yday; /* Days in year.[0-365] */ int tm_isdst; /* DST. [-1/0/1]*/#ifdef __USE_BSDlong int tm_gmtoff; /* Seconds east of UTC. */__const char *tm_zone; /* Timezone abbreviation. */#elselong int __tm_gmtoff; /* Seconds east of UTC. */__const char *__tm_zone; /* Timezone abbreviation. */#endif};這兩個函式的原型為:
struct tm *localtime(const time_t *timep);
struct tm *gmtime(const time_t *timep);
不同點
localtime函式獲得的tm結構體的時間,是已經進行過時區轉化為本地時間。
而此函式功能類似獲取當前系統時間,只是獲取的時間未經過時區轉換。