วิธีง่าย ๆ ในการรับ International Atomic Time ใน linux?


12

ระบบของฉันใช้ UTC สำหรับนาฬิกาของระบบซึ่งฉันไม่รู้สึกอยากเปลี่ยน มีวิธีง่ายๆในการรับเวลา TAI ปัจจุบันหรือไม่? (โดยเฉพาะอย่างยิ่งเครื่องมือบรรทัดคำสั่งหรือแฟล็ก)


2
คุณต้องการรับความแตกต่างระหว่าง UTC และ TAI เพื่อจุดประสงค์ในการให้ข้อมูลหรือไม่ (เช่น 12:30:13 UTC และ 12:30:45 TAI) หรือคุณต้องการรีเซ็ตนาฬิกาจากแหล่งภายนอกเพื่อชดเชยความแตกต่างสะสม ระบบท้องถิ่นของคุณ?
สเวน

1
ในขณะนี้มีวัตถุประสงค์เพื่อให้ข้อมูลเท่านั้น และในกรณีที่ฉันต้องการใช้ในการเขียนโปรแกรมเนื่องจาก TAI ซึ่งแตกต่างจาก UTC มักเพิ่มความน่าเบื่อ
JanKanis

คำตอบ:


9

มีความคืบหน้าในการให้การสนับสนุน Linux พื้นเมืองสำหรับ TAI ก่อนหน้านั้นคุณสามารถใช้รูปแบบนาฬิกาเพื่อแปลงเป็น TAI


อืมตอนนี้ยังไม่มีการสนับสนุนที่ง่าย แต่การสนับสนุนเคอร์เนลกำลังจะมาแล้วเราเพียงแค่ต้องรอยูทิลิตี้ userland เพื่อรองรับตัวเลือก CLOCK_TAI
JanKanis

2

คำตอบของเขตเวลา "right /" ไม่ถูกต้อง มันหมายถึงการแปลงจากนาฬิการะบบที่เก็บใน 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" แทนที่ "ตอนนี้" ด้วยวันที่ / เวลาที่คุณต้องการแปลง - ผลลัพธ์ถูกต้องสำหรับทุก ๆ วันหลังจาก 1/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


แน่นอนคุณถูกต้องเกี่ยวกับคำตอบของฉัน อย่างที่คุณเห็นจากตัวอย่างที่คัดลอกในปี 2013 มันใช้งานได้ อย่างไรก็ตามวันนี้ในปี 2560 ฉันมีความแตกต่าง 10 วินาทีระหว่าง TAI และสิ่งที่TZ='right/UTC' dateกำลังพิมพ์
Huygens

โปรดทราบ: UTC ได้รับการปรับด้วย GPS และ TAI เมื่อมีการปรับปรุงเผ่นวินาที TAI (Temps Atomique International เป็นมาตราส่วนเวลาปรมาณูระหว่างประเทศตามการนับอย่างต่อเนื่องของ SI วินาที) ในปี 2019 TAI ล่วงหน้าก่อนเวลา UTC โดย 37 วินาที TAI นำหน้า GPS ตลอดเวลา 19 วินาที ระบบใด ๆ ที่ใช้สิ่งนี้จะต้องได้รับการอัปเดตเพื่อให้ "../leaps/UTC" เป็นปัจจุบัน
KevinM

1

คำตอบเลิกใช้แล้ว : ดู/server//a/812163/67419

คุณสามารถใช้เขตเวลา "right /" เพื่อแสดงการประมาณ (<1s) ของ 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 ถึงวันนี้เขตเวลา "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 แทน มันเป็นการดีกว่าที่จะให้นาฬิกาของคุณถูกต้องเสมอไป
ตุ๋น

4
ฉันคิดว่า NTP ออกเวลา UTC ไม่ใช่เวลา TAI ที่ฉันขอมาโดยเฉพาะ
JanKanis
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.