- ไม่ได้หมายความว่า UTC (เวลาสากลเชิงพิกัด) แย่
- ที่ประชุมใหญ่ว่าด้วยการชั่งตวงวัดระหว่างประเทศได้ยกเลิก leap second จาก UTC หลังปี 2035
- leap second เกี่ยวข้องกับการหมุนของโลก ซึ่งไม่สม่ำเสมอและคาดการณ์ไม่ได้
- นอกจาก UTC แล้ว หนึ่งในมาตรฐานเวลาที่สำคัญคือ TAI (เวลาปรมาณูสากล) ซึ่งไม่มี leap second
- ปกติแล้ว UTC ไม่ได้ถูกใช้หลัก ๆ เพื่อวิศวกรรม จึงพอมี leap second ได้ แต่เวลา Unix กลับไม่เป็นเชิงเส้นเพราะ leap second และก่อให้เกิดความสับสนมากมาย
เวลา Unix แบบ TAI
- เวลา Unix แบบ TAI ที่เริ่มต้นจากวันที่ 1 มกราคม 1970 เวลา 0 นาฬิกา 0 นาที 10 วินาที จะเพิ่มขึ้นอย่างเป็นเชิงเส้นและมีคุณสมบัติทางคณิตศาสตร์ที่มีประโยชน์ แต่ไม่เป็นที่นิยม
- มันแตกต่างจากเวลา Unix และไม่สามารถใช้แทนกันได้
- เมื่อเทียบกับเวลา Unix
- เนื่องจากเป็นเชิงเส้น จึงคำนวณได้ง่ายมากว่า t + 1 วินาที หรือ t + 100000000 วินาทีคือเมื่อใด ส่วนเวลา Unix คำนวณไม่ได้เพราะไม่รู้ว่า leap second ในอนาคตจะเกิดเมื่อใด ทำได้เพียงคาดการณ์
- คำนวณส่วนต่างระหว่าง timestamp สองค่าได้ง่าย
- การคำนวณวันที่หรือเวลานั้นยากกว่า เพราะโดยทั่วไปเราต้องการรู้เวลา UTC ไม่ใช่เวลา TAI จึงต้องสะท้อน leap second
- ไม่มีความกำกวมและคืนค่าเฉพาะค่าที่ใช้ได้เท่านั้น
เปลี่ยนไปใช้เวลา Unix แบบ TAI โดยไม่เกิดปัญหาใหญ่
- มีข้อเสนอให้แบ่งเวลาในมาตรฐาน POSIX ออกเป็น 3 แบบ: เวลา Unix, เวลา Unix แบบ TAI+C, และเวลา Unix แบบ legacy
- เวลา Unix แบบ legacy จะคืนค่าเวลา Unix แบบเดิมก่อนช่วงเวลาหนึ่ง และหลังจากนั้นจะคืนค่าเวลา Unix แบบ TAI+C
- เนื่องจาก leap second พึ่งพาทรัพยากรออนไลน์ จึงสมเหตุสมผลที่จะเปลี่ยนผ่านให้ตรงกับปี 2035 ซึ่งเป็นปีที่ leap second จะถูกยกเลิก
4 ความคิดเห็น
รู้สึกว่าน่าจะต้องกลับไปอ่านแบบละเอียดกว่านี้ เลยลองแปลแบบคร่าว ๆ ดูครับ!
https://weblog2.wafe.kr/posts/translation-unix-time-bad/
สิ่งที่หมายถึงเวลายูนิกซ์ก็คงเป็น
unix timestampที่ใช้กันทั่วไปใช่ไหมครับ?ปกติก็ใช้กันอยู่ตลอดเลยไม่เคยคิดอะไร แต่ถ้าอย่างนั้นก็แปลว่า OS อย่าง Linux จะให้ไทม์สแตมป์โดยสะท้อนอธิกวินาทีที่เคยผ่านมาแล้วสินะ? เป็นเรื่องใหญ่มากเลยนะครับ...
ตรงกันข้ามต่างหาก วินาทีอธิกสุรทินใกล้เคียงกับการทำให้ 1 วินาทีจริงกลายเป็นเวลาที่ไม่เคยมีอยู่ ดังนั้นสำหรับ OS ที่ตั้งตาม UTC หากคำนวณโดยใช้แค่ไทม์สแตมป์ก็จะได้ Unix time และในทางกลับกัน หากต้องการค่า TAI ก็ต้องบวกวินาทีอธิกสุรทินที่เคยมีอยู่เข้าไป