Italiano

Strumenti per sviluppatori · Convertitore di timestamp Unix

Perché l'era Unix inizia il 1 Gennaio 1970: una breve storia dell'epoca

· Sfondo

timestamp tempo Unix formati di dati

Una linea temporale che si irradia dal punto zero nell'epoca Unix
Illustrazione vettoriale originale ToolAcre

Non è successo nulla il 1 gennaio 1970; la data è stata scelta per comodità dopo che l'orologio originale di Unix ha minacciato di traboccare. Questo post racconta la storia del primo orologio Unix, del passaggio ai secondi e di come la convenzione si diffuse ovunque.

Una data che nessuno celebra: perché 1970 continua ad apparire in bug, impostazioni predefinite e dashboard mezzo secolo dopo

Gennaio 1970 viene visualizzato ogni volta che il software sbaglia una piccola durata o i secondi contano per millisecondi. Non è un compleanno fallback generato da ToolAcre; è il punto zero da cui è stato interpretato l'input. Il test per l'epoca zero ritorna `1970-01-01T00:00:00.000Z` e giovedì.

Vedere quella data è quindi diagnostico. Un valore vicino allo zero, un campo mancante forzato a zero o una mancata corrispondenza della scala possono verificarsi nelle vicinanze. Cattura il valore grezzo prima di incolpare la formattazione. L'output del calendario rivela l'aritmetica ricevuta.

La tabella delle epoche notevoli di ToolAcre fornisce a zero un'etichetta deliberata, rafforzando il fatto che 1970 è un riferimento definito piuttosto che una pagina di errore scelta dal browser.

Il primo orologio di Unix: conta sessantesimi di secondo dall'inizio di 1971 ed esaurisce lo spazio di 32 bit in meno di tre anni

Il quaderno di esercizi forniva un resoconto dettagliato di un primo orologio che contava i sessantesimi da 1971. Nessuna delle fonti del repository richieste documenta quella cronologia. Ripeterlo a memoria violerebbe il contratto di creazione anche se una storia esterna potrebbe successivamente supportarlo.

Ciò che può essere dimostrato è l'asse corrente: zero all'epoca, secondi positivi dopo e secondi negativi prima. Questo meccanismo è sufficiente per utilizzare il convertitore e il software di diagnosi. Un futuro articolo storico dovrebbe includere fonti primarie o accademiche riviste piuttosto che trattare il codice come prova di riunioni di progettazione.

Il repository non contiene il primo progetto di orologio di Unix, quindi non viene affermata alcuna ricostruzione storica

ToolAcre nomina il timestamp Unix di input e lo definisce nella guida agli errori come secondi o millisecondi da 1970-01-01 UTC. La fonte non spiega perché fu scelto quell'anno, se la rotondità contasse o quale orizzonte volessero i progettisti. Tali motivi rimangono omessi.

L'aritmetica spiega l'utilità duratura di un'origine fissa: la sottrazione produce la distanza trascorsa, il confronto ordina gli istanti e un segno indica da quale lato dello zero si trova un valore. La scelta dello zero è convenzionale; la coerenza tra produttori e consumatori è ciò che rende i numeri interoperabili.

Questa distinzione mantiene separate convenzione e conseguenza. Il software può contare con fiducia sulle conseguenze mentre gli storici continuano a valutare le prove sull’origine della convenzione.

La definizione implementata utilizza 1970; le motivazioni della sua scelta richiedono fonti storiche qui non presenti

I test si modellano ogni giorno come fa la conversione POSIX e saltano esplicitamente da `2016-12-31T23:59:59Z` a `2017-01-01T00:00:00Z`. Questa è una prova eseguibile del comportamento di questo strumento. Non si tratta di una citazione per la formulazione o la portata completa di uno standard esterno.

Mantenere le affermazioni sugli standard distinte dai test di implementazione. Un test dimostra cosa fa una versione sotto i suoi infissi; un documento di standard definisce cosa dovrebbero fare i sistemi conformi. In questo caso il contratto pratico è sufficientemente chiaro da consentire di prevedere l’output senza inventare una storia di formalizzazione.

Il test impedisce inoltre a un futuro refactoring di inserire silenziosamente un'etichetta speciale di salto nell'output. La compatibilità osservabile è tutelata senza sopravvalutare il motivo per cui esiste la convenzione.

ToolAcre testa il modello in stile POSIX ma non funge da citazione di standard

JavaScript La data rappresenta il conteggio delle epoche in millisecondi, mentre ToolAcre accetta secondi Unix e li converte moltiplicando per 1,000. Anche il percorso restituisce entrambi i moduli. Questo limite spiega perché le applicazioni web spesso espongono lo stesso istante con tre zeri decimali aggiuntivi.

Il repository non può stabilire la cronologia in base alla quale database, librerie C e altri ecosistemi hanno adottato rappresentazioni epocali. Piuttosto che raccontare una diffusione senza fonti, mostra un attuale punto di interoperabilità ed etichetta l’unità utilizzata. Questa è una prova utilizzabile per gli sviluppatori che lavorano oggi.

Questa limitazione evita un fallimento del contenuto familiare: una sequenza di pietre miliari plausibili ripetute senza citazioni finché i lettori successivi non scambiano la ripetizione accumulata per prove documentali.

Le prove del repository mostrano la rappresentazione in millisecondi di JavaScript, non la cronologia completa della diffusione

Un'epoca fissa non comporta alcuna zona locale. ToolAcre formatta la data risultante in UTC e separatamente nella zona locale del browser. I valori negativi si estendono prima dello zero, come dimostra il test −1. Tali conseguenze derivano direttamente da un asse numerico e da un livello di formattazione.

L'implementazione ha anche un intervallo di date di ±8.64×10¹⁵ millisecondi. Questo è un limite della rappresentazione scelta, non un limite inerente all'idea astratta di un'epoca. Identificare sempre l'intervallo e l'unità di cui si sta discutendo prima di generalizzare dal risultato di un convertitore.

Il formattatore locale può applicare una data prima o dopo il limite UTC a seconda dell'offset. Ciò non sposta lo zero; cambia solo la proiezione del calendario umano.

Cosa non copre: epoche di altri sistemi, come 1900, 1601 e 1980, che hanno le proprie storie

Altri sistemi possono scegliere un altro zero e un'altra scala, motivo per cui un numero intero grande può rimanere privo di senso in entrambe le unità ToolAcre. Questo articolo non racconta la storia delle origini 1900, 1601 o 1980. L'articolo 340 si concentra invece sul riconoscimento di tale discrepanza e sulla derivazione di conversioni da definizioni documentate.

Quando l'origine è sconosciuta, confrontare con la documentazione originale anziché spostare ripetutamente gli zeri. Un convertitore Unix presuppone intenzionalmente 1970; non può identificare automaticamente un'epoca straniera da un numero. Mantenere l'origine accanto all'unità impedisce che un successo aritmetico diventi un errore semantico.

Altre origini di epoche vengono confrontate separatamente senza rivendicare qui la loro storia

La lezione affidabile è meccanica: lo zero Unix si associa all'inizio di 1970 UTC, i segni si estendono attorno ad esso e i secondi diventano JavaScript millisecondi prima della formattazione della data. ToolAcre rende ciascuno di questi fatti osservabili con i valori 0, −1 e la tabella delle epoche notevoli.

Le ragioni per cui le persone hanno scelto quella convenzione appartengono alla storia, non a deduzioni dal codice moderno. Rispettare quel confine produce un resoconto più breve ma più vero. Utilizzare il convertitore per l'aritmetica; utilizzare materiale storico appropriato prima di attribuire motivazioni o pietre miliari.

La disciplina delle prove fa parte dell'accuratezza tecnica. Un'omissione precisa dice ai manutentori esattamente quale nuovo approvvigionamento è necessario prima che il resoconto storico possa espandersi responsabilmente.