linux时钟API和库函数

1.背景知识

1.1.UTC & GMT

(1)两个都是国际上为了统一描述各地区时间定的标准。
GMT和UTC都是英国伦敦的时间,不同是GMT是用天文观测得到的,UTC是用原子钟得到的,所以UTC时间更精准。
所以现在大多用UTC时间。
(2)UTC使用使用
以伦敦为轴线,东为正,西为负,
比如北京是东8区,那么如果 UTC : 8:30
那么北京时间为 : 北京时间=UTC+0800
北京时间=16:30
如果北京时间是 2:00
那么伦敦时间是:
北京时间=UTC+0800
UTC=北京时间-0800
UTC=-6:00

负数表示前一天,说明是相对于北京的昨天的凌晨6:00


1.2.OS下的时间

(1)全局变量jiffies

jiffies是OS中最小的时间段,同时也是OS使用的时钟节拍。
开机时,OS从RTC得到当前时间,然后用 当前时间-(1970.01.01 00:00:00 + 0000(UTC)),得到一个时间段,再将这个时间段转换成 以 jiffies 为单位的数值,然后每过jiffies这么长一段时间,全局变量jiffies加1,有了jiffies后,OS再需要得到当前时间就不需要RTC了,只需要将jiffes转换成 标准时间,将标准时间+基准时间即可。
(2)jiffies时间段有多长
不同的OS,不同的jiffies,现代linux一般是10ms,或者1ms。如果是1ms,那么频率就是1HZ

所以RTC只是用于关机时,维持时间记录。


2.linux中时间相关的API和库函数



注意:

(1)当Localtime和gmtime同时使用时,得到的都是UTC +0000时间。
(2)当localtime和gmtime分开使用时,localtime得到的时当地时间,gmtime得到的是UTC +0000时间。


猜你喜欢

转载自blog.csdn.net/blank2019/article/details/79550260