STM32 RTC(一)Unix时间戳

本文介绍了STM32 RTC使用Unix时间戳的优势,如简化硬件电路和时间间隔计算,但也指出其在时间转换上的挑战,如需考虑闰年闰月、时区和闰秒问题。STM32 RTC采用32位无符号整数,避免了2038年问题。还讨论了UTC和GMT的区别,以及如何利用C语言的time.h库进行时间戳与日期的转换。
摘要由CSDN通过智能技术生成

Unix时间戳(Unix TimeStamp),实质上是一个向上计数的秒计数器,不分年月日时分秒,它的起始点为伦敦标准时间的1970年1月1日0时0秒,截止到2023年,时间戳的计数已经有16亿多,一般的计算机采用的都是32位的整形数据,计数最高为21亿多,经人计算,2038年会出现计算机危机,也就是计数溢出,STM32的RTC采用的为无符号32位整形数据,2100年才会有这个问题不必担心,但随着时代发展,目前大多数使用的是64位。

使用Unix时间戳是好处,第一就是硬件电路简单,只需要设置一个秒计数寄存器;第二就是在进行时间间隔计算的时候不需要考虑年月日等,只需要将两个时刻相减,得到秒差。坏处就是占用软件资源较多,比如你需要将当前的秒数转换成日常生活用的年月日时分秒,还要考虑闰年闰月这些东西,这就需要计算机经过一系列复杂的运算了。

另外,上面也说了起始点是伦敦时间,秒数转换成的时间当然也是伦敦时间了,想要得到北京时间,这就要加上八个小时了,这是因为地球每个经度的时间是不一样的,每相差一个时区就要加减一个小时,北京的时区为东八区。举个例子,时间戳转换成的时间为1970.1.1 0:0:0,那么北京时间就是1970.1.1 8:0:0了。

时间戳是不考虑闰秒的,那么闰秒又是什么?首先得知道UTC跟GMT了。GMT(Greenwich Mean Time),格林尼治标准时间,是一种以地球自转为基础的时间计量系统,但地球自转因为自然因素的影响是越来越慢的,会导致产生时间误差,一秒的时间会变慢,考虑到这个因素,UTC就产生了。UTC(Unive

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值