Lin*_*eur 3 linux unix timezone date
我做了这个date命令,它给出了以下输出
root@localhost:~$ date
Thu Dec 30 14:19:47 UTC 2010
Run Code Online (Sandbox Code Playgroud)
然后我使用date -s命令修改了日期,该命令给出了以下输出
root@localhost:~$ date -s "12/30/2010 JST 14:19:47"
Thu Dec 30 05:19:47 UTC 2010
Run Code Online (Sandbox Code Playgroud)
我注意到时间更改为比 UTC 时间晚 9 小时以准确显示 JST 时间。但是您可以看到时区仍然显示UTC。为什么它显示正确的时间和错误的时区?
谢谢
这是因为您的系统设置为使用 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
Run Code Online (Sandbox Code Playgroud)
编辑
回答您的评论 - date 命令必须能够理解作为date string参数的一部分提供的时区信息-s以及如何处理它。如果您检查源代码,您会发现所有常见的时区缩写及其与 GMT 的偏移量都已定义。然后使用此信息正确设置时间。根据您检查的 core-utils 版本,您将在 lib/parse-datetime.c 或 lib/getdate.c 中找到信息