Linux 上的日期和时区

Linux 上的日期和时区

我运行了该date命令并得到了以下输出:

root@localhost:~$ date
Thu Dec 30 14:19:47 UTC 2010

然后,我修改了日期,使用date -s得到了以下输出:

root@localhost:~$ date -s "12/30/2010 JST 14:19:47"
Thu Dec 30 05:19:47 UTC 2010

我注意到时间已改为比 UTC 晚 9 小时,以准确显示 JST 时间。但如您所见,时区仍为 UTC。为什么它显示正确的时间和错误的时区?

答案1

这是因为您的系统设置为使用 UTC(或未设置时区)而不是 JST。date 命令将接受 JST 作为输入修饰符,但随后使用系统默认值来显示它。如果您希望系统以 JST 格式显示时间,则应将时区设置为 JST。

删除或重命名/etc/localtime,然后将相关文件链接/usr/share/zoneinfo/etc/localtime

cd /etc
mv localtime localtime.orig
ln -s /usr/share/zoneinfo/Japan /etc/localtime

编辑:

回答你的评论 - date 命令必须能够理解作为参数一部分提供的时区信息date string以及-s如何处理它。如果你检查源代码您会发现所有常用时区缩写及其与 GMT 的偏移量都已定义。然后可以使用这些信息来正确设置时间。根据您检查的 core-utils 版本,您可以在lib/parse-datetime.c或中找到这些信息lib/getdate.c

答案2

只要正确设置您的时区,然后您就可以“自然地”使用日期命令。

export TZ=JST

相关内容