Простой способ получить Международное атомное время на Linux?

Моя система использует UTC для системных часов, которые я не особо хочу менять. Есть ли простой способ узнать текущее время TAI? (желательно инструмент командной строки или флаг)

4 ответа

Идет работа над тем, чтобы предоставить Linux поддержку TAI. До этого вы можете использовать схему-часы для преобразования в TAI.

Ответ с "правильным /" часовым поясом неверен. Он предназначен для преобразования системных часов, хранящихся в 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". Замените "сейчас" на дату / время, которое вы хотите преобразовать - выходные данные верны для каждой даты после 1 января 1980 года.

Выход:

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

Ответ устарел: см. /questions/128928/prostoj-sposob-poluchit-mezhdunarodnoe-atomnoe-vremya-na-linux/128933#128933

Вы можете использовать часовой пояс "вправо /" для отображения приблизительного значения (<1 с) TAI.

Но вы должны убедиться, что ваш пакет с часовым поясом обновлен (например, tzdata в Ubuntu).

Код:

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 года по сегодняшний день часовой пояс "вправо /UTC" соответствует TAI - 10 секунд, а не TAI. Или была ошибка.

Это легко сделать: просто беги/usr/sbin/ntpdate pool.ntp.org;/sbin/hwclock --systohcодин раз или добавьте его в cron. У меня это установлено ежедневно.

Другие вопросы по тегам