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

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结构体如下

[cpp]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; //日光节约时间
}[/cpp]

时间例程如下

[cpp]#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;
}[/cpp]

参考资料

作者:JarvisChu
原文链接:编程中的时间相关概念(汇总)
版权声明:自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0

发表评论