在Linux上获取国际原子时间的简单方法?


12

我的系统使用UTC作为系统时钟,我不太想更改它。是否有一种简单的方法来获取当前的TAI时间?(最好是命令行工具或标志)


2
您是否想获取UTC和TAI之间的差异以供参考(例如,UTC 12:30:13和TAI 12:30:45),还是要从外部来源重置时钟以弥补累积的差异?您的本地系统?
斯文

1
此刻仅供参考。万一我想在编程中使用它,因为与UTC不同,TAI总是单调增长
JanKanis 2012年

Answers:



2

带有“正确/”时区的答案不正确。它旨在从保存在TAI中的系统时钟-10s转换为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”。将“现在”替换为要转换的日期/时间-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

[1] http://www.leapsecond.com/java/gpsclock.htm


的确,您对我的回答是正确的。从复制的示例中您可以看到,在2013年它可以正常工作。但是,在2017年的今天,TAI与TZ='right/UTC' date正在打印的内容之间相差10秒。
惠更斯(Huygens)

请注意:更新leap秒时,会相对于GPS和TAI调整UTC。TAI(国际原子钟,是基于对SI秒的连续计数的国际原子钟)。在2019年,TAI比UTC领先37秒。TAI总是比GPS领先19秒。任何使用此功能的系统都必须更新,以使“ ../leaps/UTC”保持最新状态。
KevinM

1

答案已弃用:请参阅/server//a/812163/67419

您可以使用“ right /”时区来显示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。还是有一个错误。


-1

这很容易做到:只需运行 /usr/sbin/ntpdate pool.ntp.org;/sbin/hwclock --systohc 一次或将其添加到cron中。我将其设置为每天。


1
最好使用类似的pool.ntp.org代替固定IP地址,以更好地平衡服务。
斯文

4
ntpdate的作者也将其标记为未维护,已过时和不推荐使用。鼓励人们改用ntpd和ntp-wait。最好让时钟始终正确,而不是让时钟周期性地突然跳到正确的时间。
2012年

4
我认为NTP发出的是UTC时间,而不是我特别要求的TAI时间。
JanKanis
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.