Misconceptions Programmer Ngeunaan Unix Time

Abdi nyungkeun hapunten Patrick McKenzie.

kamari Danny Kuring nanya ngeunaan sababaraha fakta metot ngeunaan waktos Unix, sarta kuring inget yen kadang gawéna lengkep unintuitively.

Tilu fakta ieu sigana pisan masuk akal sareng logis, sanés?

  1. Waktu Unix nyaéta jumlah detik saprak 1 Januari 1970 00:00:00 UTC.
  2. Upami anjeun ngantosan persis sadetik, waktos Unix bakal robih persis sadetik.
  3. Waktos Unix henteu kantos mundur.

Taya ieu bener.

Tapi teu cukup ngan saukur ngomong, "Euweuh ieu bener," tanpa ngajelaskeun. naha. Tempo handap pikeun katerangan. Tapi lamun hayang mikir sorangan, ulah gulung ka tukang gambar jam!

Misconceptions Programmer Ngeunaan Unix Time
Jam méja ti 1770s. Disusun ku John Leroux. Ti Koléksi wilujeng sumping. Diterbitkeun dina lisénsi CC ku

Katiluna misconceptions boga hiji alesan: detik kabisat. Upami anjeun henteu wawuh sareng detik kabisat, ieu mangrupikeun rujukan gancang:

Waktu UTC ditangtukeun ku dua faktor:

  • Waktos Atom Internasional: Rata-rata bacaan tina ratusan jam atom di sakuliah dunya. Urang bisa ngukur kadua ku sipat éléktromagnétik hiji atom, sarta ieu pangukuran paling tepat waktu dipikawanoh pikeun sains.
  • Waktos Dunya, dumasar kana rotasi Bumi sabudeureun sumbu sorangan. Hiji revolusi pinuh nyaéta hiji poé.

Masalahna nyaeta dua angka ieu teu salawasna cocog. Rotasi Bumi henteu konsisten - laun-laun ngalambatkeun, janten dinten-dinten dina Waktos Universal janten langkung panjang. Di sisi séjén, jam atom anu devilishly akurat tur konstan salila jutaan taun.

Nalika dua kali teu sinkron, sadetik ditambahkeun atawa dipiceun tina UTC pikeun nyingkronkeun deui. Kusabab 1972 jasa IERS (anu ngajalankeun hal ieu) ditambahkeun 27 detik tambahan. Hasilna nyaéta 27 dinten UTC kalayan durasi 86 detik. Sacara téoritis, sapoé kalayan durasi 401 detik (minus hiji) tiasa waé. Kadua pilihan bertentangan sareng asumsi dasar waktos Unix.

Waktu Unix nganggap yén unggal poé lumangsung persis 86 detik (400 × 60 × 60 = 24), tanpa tambahan detik. Upami luncat sapertos kitu kajantenan, waktos Unix ngaluncat sadetik, atanapi ngitung dua detik dina hiji. Dina 86, éta leungit 400 detik kabisat.

Janten kasalahpahaman urang kedah ditambihan sapertos kieu:

  • Waktu Unix nyaéta jumlah detik saprak 1 Januari 1970 00:00:00 UTC dikurangan detik kabisat.
  • Upami anjeun ngantosan persis sadetik, waktos Unix bakal robih persis sadetik, iwal kadua kabisat geus dihapus.

    Dugi ka ayeuna, detik-detik teu acan kantos dileungitkeun dina prakna (sareng ngalambatkeun rotasi Bumi hartosna ieu henteu mungkin), tapi upami éta kantos kajantenan, éta hartosna dinten UTC bakal langkung pondok sadetik. Dina hal ieu, detik panungtungan UTC (23:59:59) dipiceun.

    Unggal dinten Unix gaduh jumlah detik anu sami, janten detik Unix terakhir dina dinten anu disingkat moal cocog sareng waktos UTC. Ieu kumaha rupana, dina interval saparapat detik:

    Misconceptions Programmer Ngeunaan Unix Time

    Upami anjeun ngamimitian jam 23:59:58:00 UTC sareng ngantosan sadetik, waktos Unix bakal maju dua detik UTC sareng cap waktos Unix 101 moal ditugaskeun ka saha waé.

  • Waktu Unix moal tiasa uih deui, nepi ka sadetik kabisat ditambahkeun.

    Ieu parantos kajantenan 27 kali dina praktékna. Dina ahir poé UTC, hiji detik tambahan ditambahkeun dina 23:59:60. Unix gaduh jumlah detik anu sami dina sadinten, janten teu tiasa nambihan sadetik tambahan - tibatan kedah ngulang cap waktu Unix kanggo detik terakhir. Ieu kumaha rupana, dina interval saparapat detik:

    Misconceptions Programmer Ngeunaan Unix Time

    Lamun mimitian jam 23:59:60.50 sarta antosan satengah detik, waktos Unix datang deui ku satengah detik, sarta Unix 101 timestamp pakait jeung dua detik UTC.

Ieu sigana sanés ngan ukur kaanehan jaman Unix - ngan anu kuring émut kamari.

Waktos- pisan hal aneh.

sumber: www.habr.com

Tambahkeun komentar