1.UTC(universal time coordinated)称为协调时间时,是国际无线电咨询委员会制定和推荐的,以子午初线(经度0度)上的平均太阳时为依据,也就是英国伦暾的平均太阳时。
2.GMT(greenwitch mean time)格林威治平均时间,由于地球绕太阳的轨道不是圆形的,而且自转轴相对轨道面是倾斜的,导致UTC的表示不是很精确,为此提出了GMT时间,通过每一年或两年对UTC加一个闰秒完成修正。
3、Calendar Time:日历时间,是用“从一个标准时间点到此时的时间经过的秒数”来表示的时间。无论哪一个时区,在同一时刻对同一个标准时间点来说,日历时间都是一样的。日历时间返回自1970-1-1:00:00:00以来所经过的秒数累计值。
4、时区(本地时间)为了克服时间上的混乱,1884年在华盛顿召开的一次国际经度会议(又称国际子午线会议)上,规定将全球划分为24个时区(东、西各12个时区)。规定英国(格林尼治天文台旧址)为中时区(零时区)、东1-12区,西1-12区。每个时区横跨经度15度,时间正好是1小时。最后的东、西第12区各跨经度7.5度,以东、西经180度为界。每个时区的中央经线上的时间就是这个时区内统一采用的时间,称为区时,相邻两个时区的时间相差1小时。
2、时间相关的结构体
1. struct tm 结构体定义:
struct tm
{
int tm_sec; /* Seconds (0-60) */
int tm_min; /* Minutes (0-59) */
int tm_hour; /* Hours (0-23) */
int tm_mday; /* Day of the month (1-31) */
int tm_mon; /* Month (0-11) */
int tm_year; /* Year - 1900 */
int tm_wday; /* Day of the week (0-6, Sunday = 0) */
int tm_yday; /* Day in the year (0-365, 1 Jan = 0) */
int tm_isdst; /* Daylight saving time */
};
2. time_t 的定义:
typedef long time_t;
time_t表示的是从一个时间点(例如:1970年1月1日0时0分0秒)到此时的秒数。它是一个长整型数。
3. struct timespec 结构体定义:
struct timespec
{
time_t tv_sec; // seconds,秒
long tv_nsec; // and nanoseconds,纳秒
};
4. struct timeval 结构体定义:
struct timeval
{
time_t tv_sec; // seconds,秒
long tv_usec; // microseconds,微秒
};
5. struct timezone 结构体定义
struct timezone
{
int tz_minuteswest; // minutes west of Greenwich
int tz_dsttime; // type of DST correction
};
3、时间相关的函数
double difftime(time_t time1, time_t time0); // 返回 time1 和 time2 之间相差的秒数 (time1-time2)。
time_t mktime(struct tm * timeptr); // 把 timeptr 所指向的结构转换为一个依据本地时区的 time_t 值。
time_t time(time_t * timer); // 计算当前日历时间,并把它编码成 time_t 格式。
char * asctime(const struct tm * timeptr); // 返回一个指向字符串的指针,它代表了结构 timeptr 的日期和时间。
char * ctime(const time_t *timer); // 返回一个表示当地时间的字符串,当地时间是基于参数 timer。
struct tm * gmtime(const time_t *timer); // timer 的值被分解为 tm 结构,并用格林尼治标准时间(GMT)表示。 struct tm * localtime(const time_t * timer); // timer 的值被分解为 tm 结构,并用本地时区表示。
size_t strftime(char *str, size_t maxsize, const char *format, const struct tm *timeptr) // 根据 format 中定义的格式化规则,格式化结构 timeptr 表示的时间,并把它存储在 str 中。
char *strptime(const char *s, const char *format, struct tm *tm); // 将时间字符串s表示的时间解析到tm中
clock_t clock(void) // 返回程序执行起(一般为程序的开头),处理器时钟所使用的时间。