编程中的时间相关概念(汇总)

编程中的时间相关概念(汇总)

Feb 18, 2014
Coding

1. UTC和GMT时间 #

UTC,Universal Time Coordinated,世界协调时,或称世界标准时间

GMT,Greenwich Mean Time,格林尼治时间

两者关系:一般不区分,认为相同。

UTC是基于GMT时间进行修正得到的更精确的以秒为单位的时间,两者误差保持在0.9秒内,多于0.9则需要发布闰秒。

2. 夏令时 #

Daylight Saving Time,DST,日光节约时制,或称夏令时间。为了节约能源而认为规定的地方时间制度。本杰明-富兰克林首次提出。

目前全世界有近110个国家每年要实行夏令时。 自2011年3月27日开始俄罗斯永久使用夏令时,把时间拨快一小时,不再调回。中国1986-1991年实行了6年。

3. 时间编程 #

time()函数获取日历时间,即从1970年1月1日0点到现在所经历的秒数。

struct tm *gmtime(const time_t *timep) 函数将日历时间转换为GMT时间,转换结果保存在tm结构体中

struct tm* localtime(const time_t *timep) 函数将日历时间转换为本地时间,转换结果保存在tm结构体中

tm结构体如下

struct tm
{
    int tm_sec; //秒值
    int tm_min; //分钟值
    int tm_hour; //小时值
    int tm_mday; //本月第几日
    int tm_mon; //本年第几月
    int tm_year; //tm_year+1900=哪一年
    int tm_wday; //本周第几日
    int tm_yday; //本年第几日
    int tm_isdst; //日光节约时间
}

时间例程如下

#include <stdio.h>
#include <time.h>

int main(int argc, char argv[])
{
    struct tm *gmt,*local;

    //日历时间,CalendarTime
    time_t t = time(NULL);

    printf("CalendarTime:%ld\n",t); //1392711049

    //格林尼治时间,Greenwich Mean Time, GMT
    gmt = gmtime(&t);//日历时间–>GMT
    printf("GMT: %d\n",gmt->tm_hour);

    //本地时间,LocalTime
    local = localtime(&t);//日历时间–>Local
    printf("LocalTime:%d\n",local->tm_hour);

    return 1;
}

参考资料 #