关于Linux中的日期和时区的问题

我做了日期命令,它给出了以下输出
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.为什么显示正确的时间和不正确的时区?

谢谢

解决方法

这是因为您的系统设置为使用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

编辑

回答你的评论 – 日期命令必须能够理解作为-s的日期字符串参数的一部分提供的时区信息以及如何处理它.如果您检查source code,您会发现所有常用时区缩写以及它们与GMT的偏移都已定义.然后,此信息用于正确设置时间.根据您检查的core-utils版本,您将在lib / parse-datetime.c或lib / getdate.c中找到相关信息.

相关文章

linux常用进程通信方式包括管道(pipe)、有名管道(FIFO)、...
Linux性能观测工具按类别可分为系统级别和进程级别,系统级别...
本文详细介绍了curl命令基础和高级用法,包括跳过https的证书...
本文包含作者工作中常用到的一些命令,用于诊断网络、磁盘占满...
linux的平均负载表示运行态和就绪态及不可中断状态(正在io)的...
CPU上下文频繁切换会导致系统性能下降,切换分为进程切换、线...