date命令下时区格式问题

时区

UTC:协调世界时,是基于原子钟的时间标准,被广泛用作全球事件时间的一致性参考。UTC不包含任何时区信息,因此它是一个“纯”时间标准。
CST:中国标准时,是东八区的标准时间,它是中国及其周边地区使用的标准时间。CST时间在UTC时间的基础上增加了8小时。

问题描述

ST平台

在这里插入图片描述
通过date命令作为一个查看时间命令,非常方便,此时我们能够看到时区显示为CST时间。
但是在timedatectl命令下,显示Time zone: n/a (UTC, +0000),即没有设置时区,此时应该默认采用协调世界时(UTC)才对,但是date却显示使用的CST格式。

Linux中date时间格式

在这里插入图片描述
同样的,我们在Linux平台下运行相关命令,能够看到时间格式为CST,同时Time zone: Asia/Shanghai (CST, +0800),这是没有问题的,好的,那么我们需要追溯一下Time zone的相关设置。

  1. 通常情况下Linux时区的设置依赖于 /etc/localtimel 文件,能够看到他是一个链接文件,链接到一个用户目录下表示时区的文件。
    在这里插入图片描述
  2. 我们去查看一下这个时区文件的内容,虽然cat二进制文件,输出乱码,但是通过hexdump的方式查看,能够看出文件格式中又CST字样。在这里插入图片描述
  3. 同理,我们用相同的方式去查看其他时区的文件内容,找一个美洲随便一个地区的时区为例,发现他的时区是MST在这里插入图片描述
  4. 此时如果我们修改/etc/localtime链接文件,链接到该文件上,应该是能够看到date命令时区发生变化在这里插入图片描述
  5. 故此,能够看出date时区与 /etc/localtime链接文件的指向有关

验证

ST平台

同样的去追溯时区文件,我们发现ST平台下的/etc/localtine文件不是一个链接文件,而是一个时区数据文件,查看文件内容发现采用的也是CST时区格式,故此能够知道为什么date命令输出的时区格式是CST。
但是Time zone: n/a (UTC, +0000)显示未设置,应该为协调世界时,猜测应该是缺少Time zone文件的原因,尝试补齐文件路径试试。
在这里插入图片描述
果然,在我们补齐路径,并设置软连接后,使用timedatectl命令,发现Time zone被补充了。
在这里插入图片描述

TI平台

TI平台中默认为UTC时间,发现他根本就没有 /etc/localtime 文件,直接使用的默认值,这也符合我们的推测:在没有设置时区时,就应该按照UTC时间显示。
在这里插入图片描述

小结

date命令中的时区,与/etc/localtime链接文件所指向的时区数据文件有关,同时根据时区数据文件的路径来显示timedatectl文件中的Time zone字段。在设置时区时建议采用链接的方式,并注明时区文件的地区,不然容易摸不着头脑。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值