命令“date”和“hwclock”不匹配

命令“date”和“hwclock”不匹配

当我运行命令时,date它会返回我的当地时间:

qua 22 mar 2023 14:02:33 -03 

当我运行命令时,date -u它会返回伦敦时间(UTC-00)。:

qua 22 mar 2023 17:03:08 UTC

现在,当我运行命令时,hwclock --localtime它会返回伦敦时间:

2023-03-22 17:04:12.515888-03:00

当我运行命令时,hwclock --utc它会返回我的当地时间:

2023-03-22 14:05:11.123389-03:00

命令date显示正确的信息;但是,hwclock --localtime正在打印 UTC-00(伦敦时间),但它应该打印我的当地时间(UTC-03)...

  • hwclock -l应该打印utc-03(我在哪里);
  • hwclock -u应打印utc-00(伦敦)。
  • hwclock正在打印相反的信息。

如何修复?

答案1

我的系统也和你的类似。但这是正常的。我假设你的硬件时钟设置为 UTC。为此,请检查timedatectl命令输出的最后一行:

 RTC in local TZ: no

表示您的硬件时钟设置为 UTC。

检查man页面hwclock

-l,——本地时间;-u,——utc

指示硬件时钟设置为哪个时间尺度。

硬件时钟可以配置为使用 UTC 或本地时间标度,但时钟本身并未说明使用哪种替代方式。--localtime 或 --utc 选项会将此信息提供给 hwclock 命令。如果您指定了错误的选项(或未指定任何选项并采用错误的默认值),则设置和读取硬件时钟都将不正确。

如果您既未指定 --utc 也未指定 --localtime,则将使用 /etc/adjtime 中记录的最后给定的设置函数(--set、--systohc 或 --adjust)。如果 adjtime 文件不存在,则默认为 UTC。

注意:当硬件时钟保持本地时间时,夏令时变化可能会不一致。请参阅下文“本地时间与 UTC”下的讨论。

我的理解是这样的:

假设当前时间为 17:03世界标准时间。您当前时区的本地时间为 14:03 (UTC-03)。请注意,只有操作系统有时区的概念;硬件时钟对时区一无所知。

现在假设您的硬件时钟(又称实时时钟或 RTC)设置为 UTC(而不是您的本地时间),换句话说,设置为 17:03。顺便说一句,如果您不是与 Windows 双重启动。

该命令hwclock --localtime表示“将硬件时钟的当前本地时间带给我,假设硬件时钟设置为当地时间“。该命令将假定硬件返回的值(17:03)是当地时间已经它将只打印 17:03。

该命令hwclock --utc表示“将硬件时钟的当前本地时间带给我,假设硬件时钟设置为世界标准时间“。该命令将假定硬件返回的值(17:03)是世界标准时间它将转换为你的当地时间,并打印 14:03。

重申:

  • --utc表示假设硬件时钟设置为 UTC。
  • --localtime表示假设时钟设置为当地时间。

在所有情况下,hwclock打印从硬件接收到的时间将其转换为当地时间由于 UTC 比您所在的时间 +3,因此要打印当地时间必须减去3小时当你告诉它(使用--utc)时钟设置为 UTC 时。但它显示的是时钟的时间未修改当您告诉它(使用--localtime)RTC 已设置为本地时间时。


您还可以hwclock使用--test--verbose选项运行命令来查看更多详细信息。

相关内容