Perché è
1 gennaio 1970 00:00:00
considerato il tempo di epoca ?
Perché è
1 gennaio 1970 00:00:00
considerato il tempo di epoca ?
Risposte:
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.
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".
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.
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.
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 ?
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à.
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:
2019-01-23
2019-01-23T12:34:56.123456Z
2019-01-23T18:04:56.123456+05:30
2019-234
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.