複製鏈接
請複製以下鏈接發送給好友

gmtime

鎖定
gmtime是把日期和時間轉換為格林威治(GMT)時間的函數。將參數time 所指的time_t 結構中的信息轉換成真實世界所使用的時間日期表示方法,然後將結果由結構tm返回。
中文名
gmtime
包含頭文件
time.h
功    能
返回tm結構的格林尼治時間
原    型
struct tm *gmtime(time_t *)

目錄

gmtime定義

頭文件: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;            //夏令時標誌
        };
返回值:如上所述

gmtime舉例

#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;
}

gmtime時間

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

gmtime異同點

gmtime共同點

這兩個函數採用了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_BSD
long int tm_gmtoff; /* Seconds east of UTC. */
__const char *tm_zone; /* Timezone abbreviation. */
#else
long 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);

gmtime不同點

localtime函數獲得的tm結構體的時間,是已經進行過時區轉化為本地時間。
而此函數功能類似獲取當前系統時間,只是獲取的時間未經過時區轉換。