2010-03-28 10 views
38

C'è qualche motivo per utilizzare la data (1 gennaio 1970) come standard predefinito per la manipolazione del tempo? Ho visto questo standard in Java e in Python. Queste due lingue di cui sono a conoscenza. Ci sono altre lingue popolari che seguono lo stesso standard?Perché le date sono calcolate dal 1 ° gennaio 1970?

Descrivere.

+0

Un altro linguaggio popolare seguendo lo stesso standard è PHP, è un punto di inizio di tempo abbastanza comune. –

risposta

39

E 'lo standard di Unix time.

tempo Unix, o il tempo POSIX, è un sistema per descrivere i punti nel tempo, definito come il numero di secondi trascorsi dalla mezzanotte prolettico Coordinated Universal Time (UTC) del mese di gennaio 1, 1970, senza contare i secondi bisestili.

+3

Sai se Kernighan e Thompson hanno espresso una ragione per scegliere quel momento oltre "È un numero tondo leggermente prima di iniziare a costruire la cosa".? – dmckee

+0

È l'inizio di un anno, è nel fuso orario zero (Zulu). Entrambi rendono più semplice il codice di formattazione della data. –

+14

Non conta i secondi bisestili? Non conoscevo quel dettaglio. Dopo averci pensato per qualche istante, capisco perché lo faresti in quel modo, ma amico. il mio mondo è in frantumi. entro 24 secondi. – keturn

0

Sì, C (e la sua famiglia). Questo è il posto dove Java ha preso anche lui.

+1

Grazie per aver indicato. Ma perché? –

6

1 gennaio 1970 00:00:00 am è il punto zero di POSIX time.

5

C'è qualche motivo per utilizzare la data (1 gennaio 1970) come standard per la manipolazione del tempo?

Nessun motivo che conta.

Il modulo time di Python è la libreria C. Chiedi a Ken Thompson perché ha scelto quella data per una data epocale. Forse era il compleanno di qualcuno.

Excel utilizza due epoche diverse. Qualche ragione per cui versioni diverse di Excel utilizzano date diverse?

Fatta eccezione per il programmatore attuale, nessun altro saprà mai perché sono stati presi quei tipi di decisioni.

E ...

Non importa il motivo per cui è stato scelto la data. E 'stato semplicemente.

astronomi utilizzano il proprio data epocale: http://en.wikipedia.org/wiki/Epoch_(astronomy)

Perché? Una data deve essere scelta per far funzionare la matematica. Qualsiasi data casuale funzionerà.

Una data lontana nel passato evita numeri negativi per il caso generale.

Alcuni dei pacchetti più intelligenti utilizzano l'anno gregoriano prolettico 1. Qual è la ragione per cui l'anno 1?
C'è un motivo in libri come i Calcoli in calendario: è matematicamente leggermente più semplice.

Ma se ci pensate, la differenza tra 1/1/1 e 1/1/1970 è solo del 1969, un banale offset matematico.

+0

Se 1/1/1 fosse stato scelto avremmo esaurito i secondi (2^31) ormai. Allo stato attuale, affrontiamo un problema simile a Y2K nel 2038 per i sistemi operativi a 32 bit. http://en.wikipedia.org/wiki/Year_2038_problem –

+0

@Chris Nava: le persone che usano 1/1/1 contano i giorni, non i secondi. 2 miliardi di giorni sono circa 5 milioni di anni. Spesso mantengono una coppia (giorno, tempo) per massimizzare la risoluzione temporale; ci sono solo 86400 secondi nella maggior parte dei giorni. –

+0

@ S.Lott: Sì. Stavo solo sottolineando che dal momento che la maggior parte dei software conta secondi (non minuti) dall'epoca, 1/1/1 era troppo lontano nel passato per essere una data di inizio ragionevole. Pertanto, una data più recente è stata scelta come epoca del computer (e per associazione l'inizio della rivoluzione IT. ;-) –

2

Q) "Perché le date sono calcolate dal 1 ° gennaio 1970?"

A) Doveva essere il più recente possibile, tuttavia includere alcune passato. Probabilmente non c'era nessun altro motivo significativo perché molte persone lo sentono allo stesso modo.

Sapevano che rappresentava un problema se lo mettevano troppo lontano nel passato e sapevano che avrebbe dato risultati negativi se fosse stato in futuro. Non è stato necessario approfondire il passato in quanto gli eventi probabilmente si svolgeranno in futuro.

Note: i Maya, d'altra parte, aveva la necessità di collocare gli eventi nel passato, dal momento che la avevano la conoscenza di un sacco di passato, per i quali hanno fatto una calandra a lungo termine. Solo per posizionare tutti i fenomeni di routine sul calendario.

Il timestamp non era inteso come un calendario, è un'epoca. E credo che i Maya abbiano fatto il loro calendario a lungo termine usando la stessa prospettiva. (significa che sapevano dannatamente bene che non avevano alcun rapporto con il passato, avevano solo bisogno di vederlo in scala maggiore)

2

perché è sempre il 1 ° gennaio 1970, perché - "1 gennaio 1970" di solito chiamato come "epoch date" è la data in cui è iniziata l'ora per i computer Unix e tale timestamp è contrassegnato come "0". Ogni volta che tale data viene calcolata in base al numero di secondi trascorsi. In parole più semplici ... il timestamp di qualsiasi data sarà la differenza in secondi tra quella data e il '1 gennaio 1970' Il timestamp è solo un numero intero che inizia dal numero '0' su 'Midnight 1st January 1970' e continua ad aumentare di "1" come ogni secondo passaggio Per la conversione dei timestamp UNIX in date leggibili, PHP e altre lingue open source forniscono funzioni integrate.

23

La domanda ha due presupposti falsi:

  • Tutto il tempo-tracking nel calcolo è fatto come un conteggio-dal-1970.
  • Tale tracciamento è standard.

due dozzine di epoche

tempo nel mondo dei computer è non sempre rintracciato a partire dall'inizio del 1970 UTC. Mentre quello epoch è popolare, vari ambienti di elaborazione nel corso degli anni hanno utilizzato almeno lo two dozen epochs. Alcuni sono di altri secoli. Si va da anno 0 (zero) al 2001.

Unix Epoch comune, ma non dominante

L'inizio del 1970 è popolare, probabilmente a causa del suo utilizzo da parte Unix. Ma non è affatto dominante. Per esempio:

  • Innumerevoli milioni (miliardi?) Di Microsoft Excel & documenti di Lotus 1-2-3 utilizzano January 0, 1900 (31 dicembre 1899).
  • Il mondo ha ora over a billion iOS/OS X devices utilizzando il Cocoa (NSDate) epoch di 1 January 2001, GMT.
  • Il sistema di navigazione satellitare GPS utilizza January 6, 1980 mentre l'alternativa europea Galileo utilizza 22 August 1999.

ISO 8601

Supponendo un'epoca count-dal-sta usando l'epoca Unix sta aprendo una grande vulnerabilità per i bug.Un conteggio di questo tipo è impossibile da decifrare immediatamente da un essere umano, quindi errori o problemi non saranno facilmente segnalati durante il debug e la registrazione. Un altro problema è l'ambiguità della granularità spiegata di seguito.

mi suggeriscono fortemente invece serializzazione valori di data-time come inequivocabili ISO 8601 stringhe per lo scambio dati, piuttosto che un intero conteggio dal-epoca: YYYY-MM-DDTHH:MM:SS.SSSZ come ad esempio 2014-10-14T16:32:41.018Z.

Conte di Cosa Dal Epoch

Un altro problema con count-dal-epoca tempo tracking è l'unità di tempo, con almeno quattro livelli di risoluzione di uso comune.

Diagram showing different software counting from epoch by seconds, milliseconds, microseconds, or nanoseconds.

Problemi correlati