时间转换错误之总是1970

admin 4295 2025-09-28 15:38:38

1. 首先第一个问题,时间为什么从1970开始

好,第一个问题OK了

2. 第二个问题,为什么有时候获取的时间总是1970年的

有时候获取的时间是1970年1月21日等类似的

日期

首先,确定一点,当前时间的确认是通过从1970年1月1日0时0分0秒(中国从8时0分0秒)开始,计算到当前时间点所经历的秒或者毫秒数,注意两个关键词,秒和毫秒

1)如果以秒来计算,用一个变量uint32_t cur_time来存储,存储的值为1000,则日期为:1970-01-01 08:16:40,即1000/60=16分40秒

2)如果按毫秒来算,1000毫秒的日期是:1970-01-01 08:00:01,刚过1s

从上面可以得到一个结论,如果你当前的时间是用秒来存储的,当你把他当成毫秒来计算日期,那么你得到的时间长度将会缩小1000倍,这里的时间长度起点是1970。

举个例子

首先将2970年转换为秒数,得到31556995201,然后再将其按毫秒数转换为日期,最后得到的是1971年1月1日,也就是说,在1970年1月1日到2970年1月1日这个区间内的日期,如果按刚才的方式转换,最后得到的时间必定在1970年1月1日到1971年1月1日之间。

这也就解释了,为什么有时候我们获取的的时间都是1970,因为你计算时间的方式将时间长度缩短了1000倍。

解决这个问题也比较简单,如果对时间精度要求不高,不要求毫秒精度,只要将时间戳*1000后再去转换

上一篇
下一篇
相关文章