我运行了该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