如何在 Linux 中手动将时间设置为 UTC 时间戳?

如何在 Linux 中手动将时间设置为 UTC 时间戳?

如果我想设置时间,我知道我可以使用这样的命令:

sudo date +%T -s '17:45:00'

它会将时钟设置为系统时区的下午 5:45。这意味着如果我将系统设置为 UTC,则时间为 17:45 UTC,但如果系统设置为东部时间,则同一命令实际上会将时钟更新为 12:45 UTC。我能否在命令中同时指定时区标识符和时间date -s

答案1

经过反复试验,我终于找到了答案。要设置时间并强制其采用 UTC,我可以这样做:

sudo date +%T%Z -s "17:45:00UTC"

如果我想同时设置日期和时间,我可以这样做:

sudo date -s '2018-01-26T17:45:00Z'

答案2

在大多数版本的 Linux 中(特别是我脑海中浮现的 Redhat/Centos),执行以下操作:

# Delete the current time zone file
rm -f /etc/localtime

# Set it to the new value
ln -s /usr/share/zoneinfo/UTC /etc/localtime

我了解这并没有使用date您所要求的命令。

答案3

如果您要更新时间的设备没有连接到互联网。并且您不关心亚秒级的精度。您可以在已知正确时间的计算机上使用它来生成使用 UTC 时间戳设置正确时间的 bash 命令。

echo "date +%s -s @$(date +%s)"

这将生成类似的内容date +%s -s @1541377821,您可以复制并粘贴到另一台计算机。

相关内容