关于时间
GMT:GMT是格林尼治平时(Greenwich Mean Time)英文缩写。
由于地球轨道并非圆形,其运行速度又随着地球与太阳的距离改变而出现变化,因此视太阳时欠缺均匀性。视太阳日的长度同时亦受到地球自转轴相对轨道面的倾斜度所影响。为着要纠正上述的不均匀性,天文学家计算地球非圆形轨迹与极轴倾斜对视太阳时的效应。平太阳时就是指经修订后的视太阳时。在格林尼治子午线上的平太阳时称为世界时(UT0),又叫格林尼治平时(GMT)。
例如:Fri Apr 29 2011 14:50:45 GMT+0800 (China Standard Time)
UTC: UTC是协调世界时(Universal Time Coordinated)英文缩写。
由国际无线电咨询委员会规定和推荐,并由国际时间局(BIH)负责保持的以秒为基础的时间标度。UTC相当于本初子午线(即经度0度)上的平均太阳时,过去曾用格林威治平均时(GMT)来表示.北京时间比UTC时间早8小时,以1999年1月1日0000UTC为例,UTC时间是零点,北京时间为1999年1月1日早上8点整。
总之,UTC和GMT基本上相同,UTC更精确一些。
clock tick:时钟计时单元(而不把它叫做时钟滴答次数),一个时钟计时单元的时间长短是由CPU控制的。一个clock tick不是CPU的一个时钟周期,而是C/C++的一个基本计时单位。
clock_t clock( void );
clock_t 是unsigned int 类型,表示进程运行耗费的cpu时钟,注意当进程被切换成睡眠状态时,这个值不会累加。即在sleep前后调用
clock()值是一样的。
CLOCKS_PER_SEC 在windows下是1000,linux下是1000000
Calendar Time:日历时间,是用“从一个标准时间点到此时的时间经过的秒数”来表示的时间。 ANSI C标准称使用tm结构的这种时间表示为分解时间(broken-down time)。而日历时间(Calendar Time)是通过 time_t数据类型来表示的。明显是个相对时间。
在 time.h中,我们也可以看到time_t是一个长整型数:
#ifndef _TIME_T_DEFINED
typedef long time_t; /* 时间值 */
#define _TIME_T_DEFINED /* 避免重复定义 time_t */
#endif
unix系统:time_t表示的时间范围: 1970年1月1日0时0分0秒 ~ 2038年1月18日19时14分07秒
windows系统:
Microsoft C/C++ 7.0 time_t起点时间为1899年12月31日0时0分0秒
其他版本的Microsoft C/C++和Visual C++time_t起点时间为1970年1月1日0时0分0秒
Unix纪元时间:1970年1月1日0时0分0秒
time_t time(time_t *t):此函数返回从公元1970年1月1日的UTC时间从0时0分0秒算起到现在所经过的秒数。
gettimeofday: 比time函数返回更精确,struct tmval结构,
struct timeval {
time_t tv_sec; /* 秒 */
suseconds_t tv_usec; /* 微秒 */
};
浙公网安备 33010602011771号