深圳网站制作的公司嘉兴电子东莞网站建设
目录
- 操作
- 说明
- 实验
- 参考
最近有个针对时区的需求,研究了下。
查询网上的一些设置,发现基本都是系统中自带的一些文件,然后开机时解析,或者是有个修改的命令。
操作
但针对嵌入式常用到的 busybox 制作的最小系统,并没有那些文件,后查询到,可以通过设置环境变量 TZ 来改变时区的设置。如下命令,设置 东 8 时区:(这里有些疑惑东8区为何是 -8,西8区为 +8)
export TZ=CST-8
也可在程序中使用函数
#include <stdlib.h>
setenv( "TZ", "CST-08", 1 );
后发现这个 CST 可以随意更换字母,在 date 输出时,就是对应字母。
说明
使用命令 man 3 tzset 查询函数 tzset 时,发现了这部分说明,可设置夏令时:

上图中,Mm.w.d 设置为 10 月第 1 周的周日到下年 3 月的第 3 个周日的时间为 0 时区加 13 小时,其余时间为 12 小时,在最后一天 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
