linux嵌入式时区问题

目录

  • 操作
  • 说明
  • 实验
  • 参考

最近有个针对时区的需求,研究了下。

查询网上的一些设置,发现基本都是系统中自带的一些文件,然后开机时解析,或者是有个修改的命令。

操作

但针对嵌入式常用到的 busybox 制作的最小系统,并没有那些文件,后查询到,可以通过设置环境变量 TZ 来改变时区的设置。如下命令,设置 东 8 时区:(这里有些疑惑东8区为何是 -8,西8区为 +8

export TZ=CST-8

也可在程序中使用函数

#include 
setenv( "TZ", "CST-08", 1 );

后发现这个 CST 可以随意更换字母,在 date 输出时,就是对应字母。

说明

使用命令 man 3 tzset 查询函数 tzset 时,发现了这部分说明,可设置夏令时:
linux嵌入式时区问题_第1张图片
上图中,Mm.w.d 设置为 10 月第 1 周的周日到下年 3 月的第 3 个周日的时间为 0 时区加 13 小时,其余时间为 12 小时,在最后一天 2 点变化。

实验

下图为实际实验结果:

linux嵌入式时区问题_第2张图片

  • 设置 TZ=CST-8 ,时间在 UTC 时间基础上加了 8 小时;

  • 后进行了夏令时设置,时间在 UTC 时间基础上加了 8.5 小时,英文字母变为了设置的 CSST

  • 设置时间为 2023 年 10 月 1日 的接近 2 点的时间变化时刻之前,英文字母变为了设置的 CST,当时间超过 2 点后,查询时间变为了 2 点半,英文字母变为了设置的 CSST

  • 实验了时间从 2023 年 3 月 5 日的 CSST 时间变为 CST 时间,当手动设置当天的 1小时 29分时,为 CSST,自动走时到超过1小时30分,时间未变回,后边过了半个多小时,在 2 小时 3 分时查看时间,变为了 CST 时间(中间未查看时间,这里变化时间不确定,大概率是2小时,就不重新实验了);但手动设置当天的 1小时 30 分时,直接变为了 CST 显示。这里存在这个区别。

参考

https://juejin.cn/post/7076729170205605918
https://zhuanlan.zhihu.com/p/583438496

你可能感兴趣的:(arm,linux,linux,服务器,嵌入式,arm)