参考:
https://blog.csdn.net/qq_41248872/article/details/83575611
由于项目需要,需要获得linux系统中的当前的北京时间。但是通过localtime接口获取的时间和当前的北京时间无法对应上,比如现在是2019年,但是获取的时间是2016的,并且在系统启动后在命令行终端使用date查看的时间也是对应不上。
[root@arm-linux]#date
Thu Jan 21 08:50:46 UTC 2016
在此之前需要查看目录/dev/下面是否有rtc的设备节点
[root@arm-linux]#ls -al /dev/rtc*
crw------- 1 root 0 253, 0 Jan 1 1970 /dev/rtc0
第一步:
step1:从ubuntu系统中拷贝Shanghai文件到sdk中的etc目录下:
sudo cp /usr/share/zoneinfo/Asia/Shanghai common/root/etc/
step2:将文件名Shanghai改为localtime
sudo mv common/root/etc/Shanghai common/root/etc/localtime
从新编译sdk并烧写编译好的固件。
系统起来后发现时间还是没有变化,但是时区从UTC变为CST了:
date
Thu Jan 21 08:54:50 CST 2016
第二步:
在系统起来后,在终端通过如下方法可以修改当前的时间:
step1:写入系统时间
[root@arm-linux]#date -s "2019-6-21 15:19:45"
Fri Jun 21 15:19:45 UTC 2019
step2:写入硬件时钟
[root@arm-linux]#hwclock -w
[root@arm-linux]#
step3:查看硬件时间
[root@arm-linux]#hwclock
Fri Jun 21 15:21:08 2019 0.000000 seconds
[root@arm-linux]#
step4:查看系统时间
[root@arm-linux]#date
Fri Jun 21 15:20:09 UTC 2019
[root@arm-linux]#
[root@arm-linux]#