Błędne wyobrażenia programistów na temat czasu uniksowego

przepraszam Patricka McKenziego.

Wczoraj Danny Zapytałem o kilka ciekawostek na temat czasu uniksowego i przypomniałem sobie, że czasami działa to zupełnie nieintuicyjnie.

Te trzy fakty wydają się niezwykle rozsądne i logiczne, prawda?

  1. Czas uniksowy to liczba sekund od 1 stycznia 1970 r. o godzinie 00:00:00 UTC.
  2. Jeśli poczekasz dokładnie jedną sekundę, czas uniksowy zmieni się dokładnie o jedną sekundę.
  3. Czas uniksowy nigdy nie cofa się.

Nic z tego nie jest prawdą.

Ale nie wystarczy po prostu powiedzieć: „Nic z tego nie jest prawdą” bez wyjaśniania. dlaczego. Poniżej znajdziesz wyjaśnienia. Ale jeśli chcesz pomyśleć samodzielnie, nie przewijaj obok zdjęcia zegara!

Błędne wyobrażenia programistów na temat czasu uniksowego
Zegar stołowy z lat 1770. XVIII w. Opracowane przez Johna Leroux. Z Mile widziane kolekcje. Opublikowano na licencji CC BY

Wszystkie trzy błędne przekonania mają jeden powód: sekundy przestępne. Jeśli nie znasz sekund przestępnych, oto krótka instrukcja:

Czas UTC zależy od dwóch czynników:

  • Międzynarodowy czas atomowy: Średnie odczyty z setek zegarów atomowych na całym świecie. Możemy zmierzyć sekundę na podstawie właściwości elektromagnetycznych atomu i jest to najdokładniejszy pomiar czasu znany nauce.
  • Czas na świecie, oparty na obrocie Ziemi wokół własnej osi. Jedna pełna rewolucja to jeden dzień.

Problem w tym, że te dwie liczby nie zawsze są zgodne. Obrót Ziemi nie jest stały - stopniowo zwalnia, przez co dni w czasie uniwersalnym stają się dłuższe. Z drugiej strony zegary atomowe są diabelnie dokładne i niezmienne przez miliony lat.

Kiedy dwa czasy nie są zsynchronizowane, sekunda jest dodawana lub usuwana z czasu UTC, aby przywrócić ich synchronizację. Od 1972 roku służba IERS (który prowadzi tę sprawę) dodał 27 dodatkowych sekund. Rezultatem było 27 dni UTC o czasie trwania 86 401 sekund. Teoretycznie możliwy jest dzień trwający 86 399 sekund (minus jedna). Obie opcje zaprzeczają podstawowemu założeniu czasu uniksowego.

Czas uniksowy zakłada, że ​​każdy dzień trwa dokładnie 86 400 sekund (60 × 60 × 24 = 86 400), bez żadnych dodatkowych sekund. Jeśli taki skok nastąpi, czas uniksowy albo przeskakuje o jedną sekundę, albo liczy dwie sekundy w jednej. Od 2019 roku brakuje 27 sekund przestępnych.

Zatem nasze błędne przekonania należy uzupełnić w następujący sposób:

  • Czas uniksowy to liczba sekund od 1 stycznia 1970 r. 00:00:00 UTC minus sekundy przestępne.
  • Jeśli poczekasz dokładnie jedną sekundę, czas uniksowy zmieni się dokładnie o jedną sekundę, chyba że usunięto sekundę przestępną.

    Do tej pory w praktyce nigdy nie usuwano sekund (a spowolnienie obrotu Ziemi oznacza, że ​​jest to mało prawdopodobne), ale gdyby tak się kiedykolwiek stało, oznaczałoby to, że dzień UTC skróciłby się o jedną sekundę. W tym przypadku ostatnia sekunda czasu UTC (23:59:59) jest odrzucana.

    Każdy dzień uniksowy ma tę samą liczbę sekund, więc ostatnia uniksowa sekunda skróconego dnia nie będzie odpowiadać żadnemu czasowi UTC. Oto jak to wygląda w odstępach ćwierćsekundowych:

    Błędne wyobrażenia programistów na temat czasu uniksowego

    Jeśli zaczniesz o 23:59:58:00 UTC i odczekasz jedną sekundę, czas Unixowy przesunie się o dwie sekundy UTC, a znacznik czasu Unix 101 nie zostanie nikomu przypisany.

  • Czas uniksowy nigdy nie może się cofnąć, aż do dodania sekundy przestępnej.

    W praktyce zdarzyło się to już 27 razy. Na koniec dnia UTC dodawana jest dodatkowa sekunda o godzinie 23:59:60. Unix ma tę samą liczbę sekund w ciągu dnia, więc nie może dodać dodatkowej sekundy - zamiast tego musi powtórzyć uniksowe znaczniki czasu dla ostatniej sekundy. Oto jak to wygląda w odstępach ćwierćsekundowych:

    Błędne wyobrażenia programistów na temat czasu uniksowego

    Jeśli zaczniesz o 23:59:60.50 i poczekasz pół sekundy, czas uniksowy wraca o pół sekundy, a znacznik czasu Uniksa 101 odpowiada dwóm sekundom czasu UTC.

To chyba nie jedyne dziwactwa czasów uniksowych - tylko to co wczoraj przypomniałem.

Czas - bardzo dziwna rzecz.

Źródło: www.habr.com

Dodaj komentarz