在Linux的date和时区的问题

我做了date命令,它给出了以下输出

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

然后我修改date使用date -s命令whichn给出以下输出

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

我注意到时间改变为UTC时间后9小时,以显示JST时间。 但是你可以看到时区仍然显示UTC。 为什么它显示正确的时间和不正确的时区?

谢谢

这是因为您的系统设置为使用UTC(或没有设置时区)而不是JST。 date命令将接受JST作为input修改器,然后使用系统默认值来显示它。 如果您希望系统希望系统以JST格式显示时间,则应将时区设置为JST

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

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

编辑

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

只要正确设置你的时区,然后你就可以使用“自然”的date命令。

 export TZ=JST