Perché l'1 / 1/1970 è il "tempo di epoca"?


456

Perché è

1 gennaio 1970 00:00:00

considerato il tempo di epoca ?


21
Non so perché qualcuno abbia pensato che fosse soggettivo. Il tempo "Epoch" è uno schema standard di data e ora.
Preoccupato di

5
Oggi erano 380.000 ore fa
mplungjan

21
Dovremmo iniziare a contare il tempo da questa data, quindi ora siamo al 44 ° anno.
Leonardo Raele,

3
Oggi, in questo momento, è 1499969999! È solo ca. 8 ore alla fine!
Dr Beco,

1
@LeonardoRaele Yeah! poi, per esempio, la seconda guerra mondiale iniziò l'anno 31 BE!
Siavash Mortazavi,

Risposte:


418

Le prime versioni di unix hanno misurato il tempo di sistema a intervalli di 1/60 s. Ciò significava che un numero intero senza segno a 32 bit poteva rappresentare solo un intervallo di tempo inferiore a 829 giorni. Per questo motivo, il tempo rappresentato dal numero 0(chiamato epoca ) doveva essere impostato in un passato molto recente. Com'era nei primi anni '70, l'epoca fu fissata al 1971-1-1.

Successivamente, il tempo di sistema è stato modificato per aumentare ogni secondo, il che ha aumentato l'intervallo di tempo che potrebbe essere rappresentato da un numero intero senza segno a 32 bit a circa 136 anni. Poiché non era più così importante spremere ogni secondo dal bancone, l'epoca fu arrotondata al decennio più vicino, diventando così 1970-1-1. Bisogna supporre che questo sia stato considerato un po 'più ordinato rispetto al 1971-1-1.

Si noti che a 32 bit firmato intero utilizzando 1970/01/01 come la sua epoca può rappresentare date fino a 2038/01/19 , data in cui sarà avvolgere intorno al 1901/12/13.


30
1/60 ha qualcosa a che fare con la frequenza della rete elettrica americana?
xtofl

55
È la frequenza di uno degli oscillatori sulle schede di sistema utilizzate al momento. Non era necessario che l'oscillatore fosse a 60Hz poiché funzionava su DC, ma probabilmente era economico usare tutto ciò che era più comune in quel momento, e i televisori venivano prodotti in serie allora ...
Matt Howells,

18
In realtà, all'epoca, era molto comune che gli orologi per computer e gli RTC fossero sincronizzati con la forma d'onda della rete americana perché era (è?) Molto affidabile. È stato moltiplicato per ottenere l'orologio del processore e diviso per ottenere secondi per l'RTC.
Alexios,

12
@mafioso: Esatto, imposterò un promemoria sul mio laptop per il 2038 -... 1901-12-13.

18
@JediKnight Questa è una speculazione basata sulle mie esperienze come sviluppatore: cambiare uno standard richiede tempo e, se il tuo cambiamento non prende piede, finisci con standard concorrenti . La vera soluzione al problema dell'epoca sono numeri interi a 64 bit, che non spostano l'epoca in avanti nel tempo.
Jake,

51

Storia .

Le prime versioni del tempo Unix avevano un numero intero a 32 bit che aumentava a una frequenza di 60 Hz, che era la frequenza del clock di sistema sull'hardware dei primi sistemi Unix. Il valore 60 Hz appare ancora in alcune interfacce software di conseguenza. Anche l'epoca differiva dal valore corrente. La prima edizione del Manuale del programmatore Unix del 3 novembre 1971 definisce il tempo di Unix come "il tempo dalle 00:00:00, 1 gennaio 1971, misurato in sessanta secondi di secondo".


1
Il tempo è il 1 ° gennaio 1970, non il 1 ° gennaio 1971.
Steve Harrison,

10

http://en.wikipedia.org/wiki/Unix_time#History spiega un po 'le origini del tempo di Unix e l'epoca prescelta. La definizione di tempo unix e la data dell'epoca hanno subito un paio di modifiche prima di stabilizzarsi su ciò che è ora.

Ma non dice perché alla fine sia stato scelto esattamente l'1 / 1/1970.

Estratti notevoli dalla pagina di Wikipedia:

La prima edizione del Manuale del programmatore Unix del 3 novembre 1971 definisce il tempo di Unix come "il tempo dalle 00:00:00, 1 gennaio 1971 , misurato in sessanta secondi di secondo".

A causa della [gamma] limitata, l'epoca fu ridefinita più di una volta , prima che la frequenza fosse cambiata a 1 Hz e l'epoca fosse impostata sul suo valore attuale.

Diversi problemi successivi, inclusa la complessità della presente definizione, derivano dal fatto che il tempo di Unix è stato definito gradualmente dall'uso piuttosto che completamente definito per cominciare.


6

Data di riferimento dell'epoca

Una data di riferimento di epoca è un punto sulla sequenza temporale da cui contiamo il tempo. I momenti prima di quel punto vengono contati con un numero negativo, i momenti dopo vengono contati con un numero positivo.

Molte epoche in uso

Perché il 1 ° gennaio 1970 00:00:00 è considerato il tempo dell'epoca?

No, non è l' epoca, di un epoca. Ci sono molte epoche in uso .

Questa scelta di epoca è arbitraria .

I principali sistemi informatici e le biblioteche utilizzano almeno una dozzina di varie epoche . Una delle epoche più popolari è comunemente conosciuta come Unix Time , usando il momento UTC del 1970 che hai citato.

Sebbene popolare, Unix Time's 1970 potrebbe non essere il più comune. Sempre in corsa per il più comune sarebbe 0 gennaio 1900 per innumerevoli fogli di calcolo Microsoft Excel e Lotus 1-2-3, o 1 gennaio 2001 utilizzato dal framework Cocoa di Apple in oltre un miliardo di macchine iOS / macOS in tutto il mondo in innumerevoli app. O forse il 6 gennaio 1980 utilizzato dai dispositivi GPS ?

Molte granularità

Sistemi diversi utilizzano una granularità diversa nel tempo di conteggio.

Anche il cosiddetto "Unix Time" varia, con alcuni sistemi che contano interi secondi e alcuni che contano millisecondi . Molti database come Postgres usano microsecondi . Alcuni, come il moderno framework java.time in Java 8 e versioni successive, usano nanosecondi . Alcuni usano ancora altre granularità.

ISO 8601

Poiché vi è tanta varianza nell'uso di un riferimento di epoca e nelle granularità, è generalmente meglio evitare di comunicare i momenti come un conteggio da epoca. Tra l'ambiguità dell'epoca e la granularità, oltre all'incapacità degli umani di percepire valori significativi (e quindi mancare di valori errati), utilizzare il testo semplice anziché i numeri.

Lo standard ISO 8601 fornisce un ampio set di formati pratici ben progettati per esprimere valori data-ora come testo. Questi formati sono facili da analizzare in base alla macchina e facili da leggere da parte degli esseri umani attraverso le culture.

Questi includono:

  • Data-only: 2019-01-23
  • Momento in UTC : 2019-01-23T12:34:56.123456Z
  • Momento con offset da UTC :2019-01-23T18:04:56.123456+05:30
  • Settimana dell'anno settimanale : 2019-W23
  • Data ordinaria (dal 1 ° al 366 ° giorno dell'anno):2019-234

-10

Risposta breve: perché no?

Risposta più lunga: il tempo stesso non ha molta importanza, a condizione che chiunque lo utilizzi sia d'accordo sul suo valore. Poiché l'1 / 1/70 è in uso da così tanto tempo, usarlo ti renderà il codice il più comprensibile possibile per quante più persone possibile.

Non c'è grande merito nella scelta di un'epoca arbitraria solo per essere diversi.


37
Poiché Unix è stato sviluppato nel 1969 e rilasciato per la prima volta nel 1971 ed era quindi ragionevole supporre che nessuna macchina avrebbe dovuto rappresentare un tempo di sistema precedente al 01-01-1900: 00: 00.
Jörg W Mittag,

3
Come sviluppatore di giochi di simulazione storici, sembra abbastanza sciocco che i progettisti di alcuni oggetti del tempo tendano ad assumere che tutti i programmi vorranno solo rappresentare date nel futuro o nel passato recente. Ovviamente, possiamo programmare le nostre rappresentazioni o lavorare con un fattore di adattamento, ma comunque.
Dronz,

8
Lo stesso problema pre-epocale si applica agli usi "pratici" non di gioco, come fogli di lavoro, presentazione di dati scientifici, interfacce utente della macchina del tempo, ecc.
Lenoxus

7
@Dronz Devi tenere presente che è stato progettato per un computer da $ 72000 con 9 KB di RAM che utilizzava transistor e diodi per porte logiche come CPU (nessun chip al momento!). Quindi non è stato "sciocco" rendere la cosa più semplice che ha funzionato.
Camilo Martin

2
OP è corretto a livello meta, gli schemi che elaboriamo per tempo sono sempre stati abbastanza arbitrari. Il numero di giorni in un anno, il numero di giorni nel mese, l'anno "0" e le regole per l'anno bisestile sono ... folli. Ogni sistema è solo una serie di schifosi compromessi fatti perché era il migliore che potevano fare con la tecnologia disponibile e funzionava abbastanza bene per il loro caso d'uso immediato. Questo è vero per tutti i progetti di ingegneria
:)
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.