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后再去转换