Dlaczego 1/1/1970 to „epoka”?


455

Dlaczego jest

1 stycznia 1970 r. 00:00:00

rozważany czas epoki ?


21
Nie jestem pewien, dlaczego ktoś uważał to za subiektywne. Czas „Epoki” jest standardowym schematem znaczników czasu.
ConcernedOfTunbridgeWells

5
Dzisiaj było 380 000 godzin temu
mplungjan

21
Powinniśmy zacząć odliczać czas od tej daty, więc jesteśmy teraz w roku 44.
Leonardo Raele

3
Dzisiaj, teraz, jest 1499969999! To tylko ok. Jeszcze 8 godzin!
Dr Beco

1
@LeonardoRaele Tak! wtedy na przykład II wojna światowa rozpoczęła się 31 roku BE!
Siavash Mortazavi

Odpowiedzi:


417

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.


30
Czy 1/60 ma coś wspólnego z częstotliwością amerykańskiej sieci energetycznej?
xtofl

55
Jest to częstotliwość jednego z oscylatorów na płytach systemowych używanych w tym czasie. Oscylator nie musiał mieć częstotliwości 60 Hz, ponieważ działał na prąd stały, ale prawdopodobnie korzystanie z tego, co było wówczas najczęstsze, było tanie, a telewizory były wtedy masowo produkowane ...
Matt Howells

18
W rzeczywistości synchronizacja zegarów komputerowych i RTC z przebiegiem sieci w USA była bardzo powszechna, ponieważ była (jest?) Bardzo niezawodna. Został pomnożony, aby uzyskać zegar procesora, i podzielony, aby uzyskać sekundy dla RTC.
Alexios

12
@mafioso: Racja, ustawię przypomnienie na moim laptopie na 2038 -... 1901-12-13.

18
@JediKnight Są to spekulacje oparte na moich własnych doświadczeniach jako programisty: zmiana standardu wymaga czasu, a jeśli twoja zmiana się nie obejmie, otrzymasz konkurencyjne standardy . Prawdziwym rozwiązaniem problemu epoki są 64-bitowe liczby całkowite, które nie przesuwają epoki do przodu w czasie.
Jake

51

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”.


1
Epoka przypada na 1 stycznia 1970 r., A nie 1 stycznia 1971 r.
Steve Harrison

10

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.


6

Data odniesienia epoki

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ą.

Wiele epok w użyciu

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 ?

Wiele granulek

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.

ISO 8601

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:


-10

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ą.


37
Ponieważ Unix został opracowany w 1969 r. I wydany po raz pierwszy w 1971 r., Można było zatem założyć, że żadna maszyna nie będzie musiała reprezentować czasu systemowego wcześniejszego niż 1970-01-01-00: 00: 00.
Jörg W Mittag

3
Jako twórca historycznych gier symulacyjnych wydaje się dość głupie, że projektanci niektórych obiektów czasowych zakładają, że wszystkie programy będą chciały jedynie przedstawiać daty w przyszłości lub w przeszłości. Oczywiście możemy zaprogramować własne reprezentacje lub pracować we współczynniku korekcyjnym, ale nadal.
Dronz

8
Ten sam problem sprzed epoki dotyczy „praktycznych” zastosowań innych niż gry, takich jak arkusze biznesowe, prezentacja danych naukowych, interfejsy wehikułu czasu itp.
Lenoxus

7
@Dronz Musisz wziąć pod uwagę, że został on zaprojektowany dla komputera o wartości 72 000 USD z 9 KB pamięci RAM, który używał tranzystorów i diod do bramek logicznych jako procesora (w tym czasie żadnych układów!). Więc nie było „głupio” robić najbardziej podstawowej rzeczy, która działała.
Camilo Martin

2
OP jest poprawny na poziomie meta, schematy opracowane przez nas od zawsze były dość arbitralne. Liczba dni w roku, liczba dni w miesiącu, rok „0” i zasady dotyczące roku przestępnego są… szalone. Każdy system to po prostu szereg paskudnych kompromisów, ponieważ były najlepsze, co mogły zrobić z dostępną technologią i działały wystarczająco dobrze, by natychmiast wykorzystać ich możliwości. Dotyczy to wszystkich projektów inżynierskich
:)
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.