![在 Linux 上获取国际原子时的简单方法?](https://linux22.com/image/589182/%E5%9C%A8%20Linux%20%E4%B8%8A%E8%8E%B7%E5%8F%96%E5%9B%BD%E9%99%85%E5%8E%9F%E5%AD%90%E6%97%B6%E7%9A%84%E7%AE%80%E5%8D%95%E6%96%B9%E6%B3%95%EF%BC%9F.png)
我的系统使用 UTC 作为系统时钟,我不太想更改它。有没有简单的方法可以获取当前 TAI 时间?(最好是命令行工具或标志)
答案1
答案2
带有“正确/”时区的答案是错误的。它旨在将保持在 TAI - 10 秒的系统时钟转换为 UTC。因此,以下内容给出了 UTC、GPS、LOREN 和 TAI 中的正确时间 [1]:
#!/bin/sh
echo -n "UTC: "; TZ='UTC' date
echo -n "GPS: "; TZ='UTC' date --date='TZ="../leaps/UTC" now -9 seconds'
echo -n "LORAN: "; TZ='UTC' date --date='TZ="../leaps/UTC" now'
echo -n "TAI: "; TZ='UTC' date --date='TZ="../leaps/UTC" now 10 seconds'
正确的时区可能位于不同的位置,TZ="right/UTC",TZ="../zoneinfo-leaps/UTC"。将“now”替换为您要转换的日期/时间 - 输出对于 1980 年 1 月 1 日之后的每个日期都是正确的。
输出:
UTC: Sun Oct 30 16:28:30 UTC 2016
GPS: Sun Oct 30 16:28:47 UTC 2016
LORAN: Sun Oct 30 16:28:56 UTC 2016
TAI: Sun Oct 30 16:29:06 UTC 2016
答案3
答案已被弃用: 看https://serverfault.com/a/812163/67419
您可以使用“正确/”时区来显示 TAI 的近似值(<1s)。
但您需要确保您的时区包是最新的(例如 Ubuntu 上的 tzdata)。
代码:
TZ='right/UTC' date
例子:
$ date -u ; TZ='right/UTC' date
Mon Sep 16 13:36:21 UTC 2013
Mon Sep 16 13:35:56 UTC 2013
贬值原因:从 2013 年到今天,时区“right/UTC”对应于 TAI - 10 秒,而不是 TAI。或者有一个错误。
答案4
操作很简单:只需运行
/usr/sbin/ntpdate pool.ntp.org;/sbin/hwclock --systohc
一次或将其添加到 cron 中。我将其设置为每日。