嵌入式Linux中时区的修改

1、使用NTP对时,ntpdate + IP 成功后,通过 date 指令查看系统时间,比服务器时间晚了8小时。


系统时间 2018-3-1 08:18:52,服务器时间实际是 16点。

2、什么原因会造成时间差8小时呢?

考虑到是时区的问题,查询系统当前的时区设置 date -R,看到系统是 +0000 时区,而中国统一采用北京所在的东8时区,由此造成了8小时的时间偏差。

3、如何设置Linux系统的时区?

网上看到 cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime,但是这只是针对电脑系统,嵌入式系统中根本找不到 /usr/share/zoneinfo/Asia/Shanghai。

最后查询资料看到有个 TZ 的环境变量用来设置时区, 在/etc/profile添加这个变量,保存重启。

TZ=UTC-08:00  #设置为东8区
export TZ
hwclock -s
root@freescale ~$ date -R
Thu, 01 Mar 2018 16:18:08 +0800  # 时区变为 +0800
root@freescale ~$ ntpdate 172.16.30.2
 1 Mar 16:18:27 ntpdate[952]: step time server 172.16.30.2 offset 0.601111 sec
root@freescale ~$ date
Thu Mar  1 16:18:30 UTC 2018    #ntp对时后的时间与ntp服务器时间一致

可见,时区修改成功,对时正常。

4、修改时区后有另外一个需要注意的地方:程序中通过 timer(NULL)获取的系统秒数会比正常时间 少 8*3600秒,编写查询时间函数时要注意添加

//get UTC
secondsFrom1970 = time(NULL);
//add 8 hour
secondsFrom1970 += 8*3600; //增加8小时
	

//convert to Beijing time
time_utc = localtime(&secondsFrom1970);

  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值