Dlaczego jest
1 stycznia 1970 r. 00:00:00
rozważany czas epoki ?
Dlaczego jest
1 stycznia 1970 r. 00:00:00
rozważany czas epoki ?
Odpowiedzi:
Wczesne wersje systemu uniksowego mierzyły czas systemowy w odstępach 1/60 s. Oznaczało to, że 32-bitowa liczba całkowita bez znaku może reprezentować jedynie okres czasu krótszy niż 829 dni. Z tego powodu czas reprezentowany przez liczbę 0
(zwaną epoką ) musiał zostać ustalony w najnowszej przeszłości. Ponieważ było to na początku lat siedemdziesiątych, epoka została ustalona na lata 1971-1-1.
Później czas systemowy został zmieniony na przyrost co sekundę, co wydłużyło okres czasu, który może być reprezentowany przez 32-bitową liczbę całkowitą bez znaku do około 136 lat. Ponieważ wyciskanie co sekundę z licznika nie było już tak ważne, epoka została zaokrąglona w dół do najbliższej dekady, zmieniając się w 1970-1-1. Należy założyć, że uznano to za nieco starsze niż 1971-1-1.
Należy zauważyć, że 32-bitowa podpisana liczba całkowita używając 1970-1-1 jako epoki może reprezentować termin do 2038-1-19 , w którym to dniu będzie zawinięcia do 1901-12-13.
Historia .
Wcześniejsze wersje czasu uniksowego miały 32-bitową liczbę całkowitą zwiększającą się z częstotliwością 60 Hz, co było szybkością zegara systemowego na sprzęcie wczesnych systemów uniksowych. W rezultacie wartość 60 Hz nadal pojawia się w niektórych interfejsach oprogramowania. Epoka również różniła się od bieżącej wartości. Pierwsze wydanie podręcznika programisty Unix z 3 listopada 1971 r. Definiuje czas uniksowy jako „czas od 00:00:00, 1 stycznia 1971 r., Mierzony w sześćdziesięciu sekundy”.
http://en.wikipedia.org/wiki/Unix_time#History wyjaśnia trochę o pochodzeniu czasu uniksowego i wybranej epoce. Definicja czasu uniksowego i daty epoki przeszła kilka zmian, zanim ustabilizowała się na tym, czym jest teraz.
Ale nie mówi, dlaczego ostatecznie wybrano 1/1/1970.
Godne uwagi fragmenty ze strony Wikipedii:
Wydanie pierwsze ręczne datą 3 listopada 1971 określa czas Unix Unix programisty jako „czas od 00:00:00, 1 Jan., 1971 r , mierzony sixtieths drugiego”.
Z powodu [ograniczonego zakresu] epoka została ponownie zdefiniowana więcej niż jeden raz , zanim zmieniono częstotliwość na 1 Hz i ustawiono epokę na jej obecną wartość.
Kilka późniejszych problemów, w tym złożoność obecnej definicji, wynika z tego, że czas uniksowy był definiowany stopniowo przez użycie, a nie w pełni zdefiniowany na początek.
Data referencyjna epoka jest punktem na osi czasu, z którego możemy liczyć czas. Chwile przed tym punktem liczone są liczbą ujemną, chwile później liczone są liczbą dodatnią.
Dlaczego 1 stycznia 1970 r. 00:00:00 uważa się za epokę?
Nie, nie epoka, epoka. W użyciu jest wiele epok .
Ten wybór epoki jest arbitralny .
Główne systemy komputerowe i biblioteki używają co najmniej kilkudziesięciu różnych epok . Jedna z najpopularniejszych epok jest powszechnie znana jako Czas Uniksowy , wykorzystując wspomniany moment UTC z 1970 roku.
Choć popularne, Unix Czas na 1970 może nie być najbardziej powszechne. Uruchomiony zostanie również najbardziej powszechny byłby 0 stycznia 1900 r. Dla niezliczonych arkuszy kalkulacyjnych Microsoft Excel i Lotus 1-2-3, lub 1 stycznia 2001 r. Używany przez Apple Cocoa Framework na ponad miliardach urządzeń iOS / macOS na całym świecie w niezliczonych aplikacjach. A może 6 stycznia 1980 roku używane przez urządzenia GPS ?
Różne systemy używają różnej ziarnistości w zliczaniu czasu.
Nawet tak zwany „czas uniksowy” jest różny, przy czym niektóre systemy liczą całe sekundy, a niektóre milisekundy . Wiele baz danych, takich jak Postgres, wykorzystuje mikrosekundy . Niektóre, takie jak nowoczesna platforma java.time w Javie 8 i nowszych, wykorzystują nanosekundy . Niektórzy używają jeszcze innych ziarnistości.
Ponieważ istnieje tak duża różnorodność w stosowaniu odniesienia do epoki i w szczegółowości, na ogół najlepiej jest unikać komunikowania momentów jako liczenia od epoki. Pomiędzy niejednoznacznością epoki i szczegółowości, a niezdolnością człowieka do postrzegania znaczących wartości (a zatem pomijania wartości błędnych), używaj zwykłego tekstu zamiast liczb.
ISO 8601 standard zawiera obszerny zestaw praktycznych dobrze zaprojektowanych formatów wyrażania wartości daty i godziny jako tekst. Formaty te są łatwe do analizy przez maszynę, a także czytelne dla ludzi w różnych kulturach.
Obejmują one:
2019-01-23
2019-01-23T12:34:56.123456Z
2019-01-23T18:04:56.123456+05:30
2019-234
Krótka odpowiedź: dlaczego nie?
Dłuższa odpowiedź: sam czas nie ma tak naprawdę znaczenia, o ile wszyscy, którzy go używają, zgadzają się co do jego wartości. Ponieważ 1/1/70 jest w użyciu od tak dawna, użycie go sprawi, że kod będzie możliwie zrozumiały dla jak największej liczby osób.
Nie ma żadnej wielkiej wartości, wybierając dowolną epokę, by być inną.