12 คะแนน โดย winterjung 2022-11-26 | 4 ความคิดเห็น | แชร์ทาง WhatsApp
  • ไม่ได้หมายความว่า 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 ความคิดเห็น

 
galadbran 2022-12-01

รู้สึกว่าน่าจะต้องกลับไปอ่านแบบละเอียดกว่านี้ เลยลองแปลแบบคร่าว ๆ ดูครับ!

https://weblog2.wafe.kr/posts/translation-unix-time-bad/

 
galadbran 2022-11-26

สิ่งที่หมายถึงเวลายูนิกซ์ก็คงเป็น unix timestamp ที่ใช้กันทั่วไปใช่ไหมครับ?
ปกติก็ใช้กันอยู่ตลอดเลยไม่เคยคิดอะไร แต่ถ้าอย่างนั้นก็แปลว่า OS อย่าง Linux จะให้ไทม์สแตมป์โดยสะท้อนอธิกวินาทีที่เคยผ่านมาแล้วสินะ? เป็นเรื่องใหญ่มากเลยนะครับ...

 
tribela 2022-11-27

ตรงกันข้ามต่างหาก วินาทีอธิกสุรทินใกล้เคียงกับการทำให้ 1 วินาทีจริงกลายเป็นเวลาที่ไม่เคยมีอยู่ ดังนั้นสำหรับ OS ที่ตั้งตาม UTC หากคำนวณโดยใช้แค่ไทม์สแตมป์ก็จะได้ Unix time และในทางกลับกัน หากต้องการค่า TAI ก็ต้องบวกวินาทีอธิกสุรทินที่เคยมีอยู่เข้าไป

 
winterjung 2022-11-26