2.40 Unix时间戳

RTC实时时钟,实时时钟这个东西本质上是一个定时器,但这个定时器,是专门用来产生年月日时分秒,这种日期和时间信息的。RTC这个外设比较特殊,它和BKP(备份寄存器)、PWR(电源控制)的关联性比较强,所以一起来讲。RTC主电源掉电后数据不丢失,是依靠BKP来实现的。

Unix Timestamp

Unix 时间戳(Unix Timestamp)定义为从UTC/GMT的1970年1月1日0时0分0秒开始所经过的秒数,不考虑闰秒。

时间戳是什么?

时间戳是一个计数器数值,这个数值表示的是一个从1970年1月1日0时0分0秒开始到现在,总共所经过的秒数,始终就只用秒这个单位来计时。

为什么要用秒呢?对于计算机来说,一个永不进位的秒,无论是存储还是计算,都是非常方便的。简化硬件电路,我们在设计RTC硬件电路的时候,直接用一个很大的秒寄存器就行了,不需要再考虑什么年月日寄存器、进位、大月和小月等等。

用秒来计数,有时候坏处呢? 有,就是比较占用软件资源,在每次进行秒计数器和日期时间转换时,软件都要进行复杂的计算,这会占用一些软件资源。

UTC/GMT是什么意思?闰秒是什么意思?

GMT(Greenwich Mean Time)格林尼治标准时间是一种以地球自转为基础的时间计量系统。它将地球自转一周的时间间隔等分为24小时,以此确定计时标准。

UTC(Universal Time Coordinated)协调世界时是一种以原子钟为基础的时间计量系统。它规定铯133原子基态的两个超精细能级间在零磁场下跃迁辐射9,192,631,770周所持续的时间为1秒。当原子钟计时一天的时间与地球自转一周的时间相差超过0.9秒时,UTC会执行闰秒来保证其计时与地球自转的协调一致。

时间戳存储在一个秒计数器中,秒计数器为32位/64位的整型变量 世界上所有时区的秒计数器相同,不同时区通过添加偏移来得到当地时间。

 

时间戳转换

C语言的time.h模块提供了时间获取和时间戳转换的相关函数,可以方便地进行秒计数器、日期时间和字符串之间的转换。