编程中的时间相关概念(汇总)
Feb 18, 2014
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;
}