ฉันขอโทษ
เมื่อวาน
ข้อเท็จจริงทั้งสามนี้ดูสมเหตุสมผลและสมเหตุสมผลอย่างยิ่งใช่ไหม
- เวลา Unix คือจำนวนวินาทีตั้งแต่วันที่ 1 มกราคม 1970 00:00:00 UTC
- หากคุณรอหนึ่งวินาที เวลา Unix จะเปลี่ยนไปหนึ่งวินาที
- เวลายูนิกซ์ไม่เคยถอยหลัง
สิ่งนี้ไม่เป็นความจริง
แต่การพูดง่ายๆ ว่า “เรื่องนี้ไม่เป็นความจริงเลย” โดยไม่ต้องอธิบายอย่างเดียวนั้นไม่เพียงพอ ทำไม. ดูด้านล่างสำหรับคำอธิบาย แต่ถ้าอยากคิดเองอย่าเลื่อนผ่านรูปนาฬิกานะ!
นาฬิกาตั้งโต๊ะจากยุค 1770 เรียบเรียงโดย จอห์น เลอรูซ์ จาก
ความเข้าใจผิดทั้งสามประการมีเหตุผลเดียว:
เวลา UTC ถูกกำหนดโดยปัจจัยสองประการ:
เวลาอะตอมสากล : การอ่านค่าโดยเฉลี่ยจากนาฬิกาอะตอมนับร้อยทั่วโลก เราสามารถวัดวินาทีได้ด้วยคุณสมบัติทางแม่เหล็กไฟฟ้าของอะตอม และนี่คือการวัดเวลาที่แม่นยำที่สุดที่วิทยาศาสตร์รู้จักเวลาโลก โดยอาศัยการหมุนของโลกรอบแกนของมันเอง การปฏิวัติเต็มรูปแบบหนึ่งครั้งคือหนึ่งวัน
ปัญหาคือตัวเลขสองตัวนี้ไม่ตรงกันเสมอไป การหมุนของโลกไม่สม่ำเสมอ - ค่อยๆ ช้าลง ดังนั้นวันในเวลาสากลจึงนานขึ้น ในทางกลับกัน นาฬิกาอะตอมมีความแม่นยำอย่างร้ายกาจและคงที่ตลอดหลายล้านปี
เมื่อสองครั้งไม่ซิงค์กัน วินาทีจะถูกเพิ่มหรือลบออกจาก UTC เพื่อนำกลับมาซิงค์อีกครั้ง ตั้งแต่ปี พ.ศ. 1972 ให้บริการ
เวลา Unix ถือว่าแต่ละวันคงอยู่ 86 วินาทีพอดี (400 × 60 × 60 = 24) โดยไม่มีวินาทีเพิ่มเติมใดๆ หากการกระโดดเกิดขึ้น เวลา Unix จะกระโดดหนึ่งวินาทีหรือนับสองวินาทีในหนึ่งวินาที ในปี 86 มันหายไป 400 วินาทีกระโดด
ดังนั้นความเข้าใจผิดของเราจึงต้องเสริมดังนี้:
- เวลา Unix คือจำนวนวินาทีตั้งแต่วันที่ 1 มกราคม 1970 00:00:00 UTC ลบวินาทีกระโดด.
- หากคุณรอหนึ่งวินาที เวลา Unix จะเปลี่ยนไปหนึ่งวินาที เว้นแต่วินาทีกระโดดจะถูกลบออกไป.
จนถึงขณะนี้ ไม่เคยลบวินาทีในทางปฏิบัติออก (และการที่การหมุนของโลกช้าลงหมายความว่าสิ่งนี้ไม่น่าเป็นไปได้) แต่หากเคยเกิดขึ้น ก็หมายความว่าวัน UTC จะสั้นลงหนึ่งวินาที ในกรณีนี้ วินาทีสุดท้ายของ UTC (23:59:59) จะถูกยกเลิก
แต่ละวันของ Unix มีจำนวนวินาทีเท่ากัน ดังนั้นวินาทีสุดท้ายของ Unix ของวันที่สั้นลงจะไม่สอดคล้องกับเวลา UTC ใดๆ มีลักษณะดังนี้ในช่วงไตรมาสต่อวินาที:
หากคุณเริ่มต้นเวลา 23:59:58:00 UTC และรอหนึ่งวินาที เวลา Unix จะเลื่อนไปสองวินาที UTC และการประทับเวลา Unix 101 จะไม่ถูกกำหนดให้กับใครเลย - เวลายูนิกซ์ไม่สามารถย้อนกลับไปได้ จนกว่าจะเพิ่มวินาทีกระโดด.
สิ่งนี้เกิดขึ้นแล้ว 27 ครั้งในทางปฏิบัติ เมื่อสิ้นสุดวัน UTC วินาทีเพิ่มเติมจะถูกเพิ่มในเวลา 23:59:60 น. Unix มีจำนวนวินาทีเท่ากันในหนึ่งวัน ดังนั้นจึงไม่สามารถเพิ่มวินาทีพิเศษได้ แต่จะต้องประทับเวลา Unix ซ้ำในวินาทีสุดท้ายแทน มีลักษณะดังนี้ในช่วงไตรมาสต่อวินาที:
หากคุณเริ่มเวลา 23:59:60.50 น. และรอครึ่งวินาที ถือเป็นเวลา Unix กลับมา ครึ่งวินาที และการประทับเวลา Unix 101 สอดคล้องกับสองวินาที UTC
สิ่งเหล่านี้อาจไม่ใช่สิ่งเดียวที่แปลกประหลาดของเวลา Unix แต่เป็นสิ่งที่ฉันจำได้เมื่อวานนี้
เวลา - มาก สิ่งที่แปลก
ที่มา: will.com