unix系统里的各种时间和时间的转换
我估计很多人对于unix里面的时间各种头疼,我在unix高级环境编程上看到第一张图,发现原来时间转换也可以这么简单,好东西自然就要分享了,于是我就补充了一些内容,删减了一些内容,出现了这篇博文。
1.日历时间
日历时间是我们最经常使用的时间,它包含时间和日期两部分,它是从公元 1970年1月1日00:00:00以来经过的秒数。这种秒数以数据类型 time_t 表示。UNIX在这方面与其他操作系统的区别是:
(a)以国际标准时间而不是本地时间计时
(b)可自动进行转化,例如转化到夏时制
(c)将时间和日期作为一个值保存
上图中以虚线表示的四个函数受到环境变量TZ的影响。 这四个函数是:
localtime, mktime , ctime 和 strftime。如果定义了TZ,则这些函数将使用其值以代替系统默认时区。如果TZ定义为空串(亦即TZ=),则使用国际标准时间。TZ的值常常类似于:TZ=EST5EDT,但是POSIX.1允许更详细的说明。
由上图可知,有两个函数 localtime 和 gmtime 将日历时间变换成以年、月、日、时、分、秒、周日表示的时间,并将这些存放在一个 tm 结构中。
2.计时时间
说完了日历时间,再来看看计时时间,当你想统计一下你的代码运行了多少个时钟周期就用上计时时间了。计时的函数是clock(),而与其相关的数据类型是>#include <time.h> typedef long clock_t; // 使用一个长整数计算cpu的滴答次数,可以精确到毫秒级 #define CLOCKS_PER_SEC ((clock_t)1000) //也就是说每过千分之一秒(1毫秒),调用clock()函数返回的值就加1 // 返回从“开启这个程序进程”到“程序中调用clock()函数”时之间的CPU时钟计时单元(clock tick)数 clock_t clock( void );
3.小结只要能记住第一张关于各种时间转化的图,那么基本就掌握了各种时间。至于那个格式命令的图(第二张图),我本来是不想贴上来的,但为了全面还是贴上了,看看就行了,用的时候再看呗!最后一部分是计算cpu时间的,还是很简单的,对吧。