linux_time_Cfun
linux下时间处理
格林尼治时间
- 所有的UNIX系统都使用同一个时间和日期的起点:格林尼治时间(GMT)1970年1月1 日午夜(0点)。这是“UNIX纪元的起点”,Linux也不例外。Linux系统中所有的时间都以从那时起经过的秒数来衡量。
时间转换关系
其中,虚线表示的三个函数localtime,mktime,strftime受到环境变量TZ的影响,如果定义了TZ,则使用其,如果没有,则使用协调统一时间UTC。
timespec结构体
1 | struct timespec |
time函数
1 | #include <time.h> |
调用time函数得到底层的时间值,它返回的是从格林尼治时间****开始至今的秒数
time函数还会把返回值写入t指针指向的位置
difftime函数
1 | #include <time.h> |
该函数用来计算两个time_t值之间的秒数并以double类型返回它。
时钟接口函数(clock_gettime、clock_getres、clock_settime)
时钟通过clockid_t类型进行标识,下面给出了标准值
clock_gettime函数
- 该函数可用于获取指定时钟的时间,将获取的时钟时间存放在参数2中
- 当时钟ID设置为CLOCK_REALTIME时,clock_gettime函数提供了与time函数类似的功能,不过在系统支持高精度时间值的情况下,clock_gettime可能比time函数得到更高精度的时间值
clock_getres函数
- 该函数把参数把参数tsp指向的timespec结构初始化为与clock_id参数对应的时钟精度
- 例如:如果精度为1毫秒,则timespec结构体的tv_sec字段就被设置为0,tv_nsec字段就被设置为1000000
clock_settime函数
- 要对特定的时钟设置时间,可以调用clock_settime函数
- 我们需要适当的特权来更改时钟值,但是有些时钟是不能修改的