Che cos'è Unix Time e quando è stata l'epoca di Unix?

Che cos'è Unix Time e quando è stata l'epoca di Unix?

Perché Unix ha il suo concetto di tempo? Qual è l'epoca e qual è il problema Y2038?





L'ora Unix è un mezzo per rappresentare una data e un'ora specifiche, utilizzato da Linux, macOS e molti altri sistemi interoperabili. È così diffuso che probabilmente lo stai usando senza esserne consapevole. Una volta compreso il tempo di Unix, però, lo individuerai in molti contesti. Diversi strumenti possono aiutarti a lavorare con il tempo di Unix.





Qual è lo scopo di Unix Time?

Il tempo Unix è un conteggio dei secondi totali tra un'ora e una data fisse. È un formato di data/ora (o timestamp) che ha un aspetto diverso dalle date e dalle ore leggibili a cui siamo abituati. Questo è puramente per motivi di efficienza. Ci vuole molto meno spazio per memorizzare un singolo numero che rappresenta i secondi di quanto non faccia per memorizzare valori separati per l'anno, il mese, l'ora, ecc.





Ovviamente, in termini moderni, la differenza di spazio non è affatto così grande. Ma considera che Unix è nato alla fine degli anni '60, quando lo spazio di archiviazione disponibile era molto più piccolo. Anche i timestamp sono molto usati, quindi il loro spazio di archiviazione si somma. Ad esempio, a ogni file sono associati tre timestamp.

Il formato è praticamente impossibile da tradurre nella tua testa a meno che tu non sia un genio della matematica. Ma ha ancora alcuni vantaggi rispetto ad alternative più leggibili come Mer 21 Ott 2015 07:28:00 GMT . Puoi ordinare due timestamp Unix molto facilmente, a colpo d'occhio. Di solito è anche più veloce calcolare la differenza tra due timestamp. Ciò è particolarmente vero per le date ravvicinate, ad esempio nei giorni adiacenti.



A proposito dell'Epoca

Quindi, il tempo Unix è un conteggio totale di secondi da un momento specifico. Ma qual è quel momento? Suo 00:00:00 UTC Su 1 gennaio 1970 . Questo è spesso indicato come Unix Epoch. I programmatori hanno scelto questa data per l'epoca per comodità poiché era la data rotonda più vicina quando hanno inventato il tempo di Unix.

Potresti aver visto questa data quando qualcosa è andato storto. È chiaramente un bug, ma sembra molto strano quando risulta in una data precedente alla nascita di molti di noi! È completamente comprensibile, tuttavia, quando conosci il tempo di Unix. Se un sistema sta cercando di visualizzare un timestamp che non ha alcun valore, spesso si tradurrà in 0 e risulterà nella data dell'epoca esatta.





Windows 10 impiega 10 minuti per avviarsi

Il formato dei dati temporali di Unix

A rigor di termini, non ce n'è uno. Il tipo di dati originale era un intero a 32 bit, e questo spesso rimane il caso, anche in sistemi molto più potenti.

Questo tipo di dati consente al valore di memorizzare un totale di 2^32 secondi, ovvero poco più di 136 anni. Questo valore è in genere firmato, il che significa che può essere negativo o positivo. Quindi, di solito rappresenta 68 anni su entrambi i lati dell'epoca, cioè 1902-2038.





Questo è ancora un periodo limitato, ovviamente. Ma l'uso principale del formato timestamp era per concetti come la modifica dei file. La necessità era davvero quella di rappresentare il tempo vicino al presente, piuttosto che la storia antica o lontano nel futuro. Anche per applicazioni come i calendari, raramente è necessario rappresentare le date a più di qualche decennio dal futuro.

Ma questo non significa che questo lasso di tempo limitato sia senza problemi...

Il problema dell'anno 2038

Il bug dell'anno 2000 (uno dei peggiori errori di programmazione della storia) ha colpito i sistemi informatici che memorizzavano gli anni come valori a due cifre. Quando è arrivato l'anno 2000, tali sistemi lo hanno trattato come se fosse il 1900. In effetti, non è stato così catastrofico come si temeva, principalmente perché molte persone hanno speso molto tempo e fatica in anticipo, preparandosi per questo.

Se stavi prestando attenzione nella sezione precedente, potresti aver individuato un problema simile che potrebbe influenzare il tempo di Unix. Ebbene, il tempo di Unix ha un suo problema di dati: il problema Y2k38. (Spesso viene definito un problema, non un bug; forse siamo diventati più ottimisti dall'anno 2000!) Quando il tempo di Unix si esaurirà letteralmente nel 2038, i sistemi tratteranno le nuove date come 1902 o 1970. O forse ' fallirò del tutto.

Almeno questo problema non ci colpirà allo scoccare della mezzanotte di Capodanno. L'ultimo secondo del tempo Unix a 32 bit cadrà il 19 marzo. Nell'eventualità, probabilmente aggiorneremo la maggior parte dei sistemi entro il 2038 o comunque saranno obsoleti per allora.

Alcune utili risorse di timestamp

Il Convertitore d'epoca site è probabilmente il convertitore di timestamp più completo disponibile. Inizia visualizzando l'ora corrente di Unix, in tempo reale, e aggiunge quasi tutte le funzionalità immaginabili. Il suo utilizzo principale è la conversione tra timestamp e date leggibili dall'uomo, in entrambe le direzioni.

Dan's Tools è una vasta raccolta di utili app web, una delle quali è un convertitore di marca temporale . È più semplice, ma ha una presentazione molto pulita ed è facile da usare.

Il tempo è presenta un altro aspetto ancora più minimalista. Mostra l'ora in diversi formati, incluso l'ora Unix. Include l'ora corrente nel titolo della pagina, il che è utile.

Utilizzo di Unix Time con gli strumenti della riga di comando

Su Linux e macOS, il Data Il programma è l'utilità principale per gestire data/ora, inclusi i timestamp Unix. Chiamato senza argomenti, restituisce la data/ora corrente in un formato leggibile dall'uomo:

$ date
Wed Feb 10 12:28:30 GMT 2021

Se hai bisogno della data/ora corrente in Unix time, usa il +%s discussione:

$ date +%s
1612960114

Puoi convertire da una data leggibile dall'uomo in un timestamp usando il -D segnala se la tua versione di Data lo supporta. La maggior parte delle versioni di Linux dovrebbe, per impostazione predefinita:

$ date -d 'Jan 2 1970' +%s
82800

Su macOS, Data è un programma diverso, che richiede un diverso insieme di flag:

$ date -j -f '%b %d %Y %T' 'Jan 02 1970 00:00:00' '+%s'
82800

Andando nella direzione opposta, puoi convertire da un timestamp Unix usando il -R bandiera:

$ date -r 1600000000
Sun 13 Sep 2020 13:26:40 BST

Alcuni altri programmi usano il %S formato per gestire il tempo di Unix. Ad esempio, se vuoi mostrare la data di modifica di un file in Unix time, con il tasto Versione Linux di ls , puoi utilizzare quanto segue:

$ ls -l --time-style=+%s index.tmp.html
-rw-r--r-- 1 ubuntu ubuntu 17862 1521649818 index.tmp.html

Come usare Unix Time nei linguaggi di programmazione

PHP ha il tempo() funzione che restituisce il timestamp Unix corrente. Suo Data() la funzione prende un timestamp come secondo argomento:

$ php -r 'echo date('Y-m-d', time());'
2021-02-11

JavaScript si avvicina alle cose in un modo interessante. Ha un Data.ora () metodo per ottenere il numero di millisecondi dall'epoca di Unix. Naturalmente, puoi dividerlo per 1.000 e arrotondare il risultato per ottenere il tempo Unix equivalente in secondi:

> Math.floor(Date.now() / 1000)
1613083012

Capire Unix Time

Il tempo Unix è un concetto semplice che emerge in molti luoghi. Una volta compreso, potresti trovarlo molto utile, ad esempio nel calcolo delle differenze di orario. Puoi anche riconoscere quando potrebbe essere la causa di alcuni bug.

Concetti come epoch e timestamp sono una parte importante per iniziare con Linux. Per saperne di più su elementi essenziali come ls , consulta la nostra guida ai comandi di base di Linux.

Condividere Condividere Tweet E-mail 9 comandi di base per iniziare con Linux

Vuoi acquisire familiarità con Linux? Inizia con questi comandi di base di Linux per apprendere le attività di elaborazione standard.

Leggi Avanti
Argomenti correlati Circa l'autore Bobby Jack(58 articoli pubblicati)

Bobby è un appassionato di tecnologia che ha lavorato come sviluppatore software per quasi due decenni. È appassionato di giochi, lavora come editor di recensioni presso Switch Player Magazine ed è immerso in tutti gli aspetti dell'editoria online e dello sviluppo web.

Altro da Bobby Jack

Iscriviti alla nostra Newsletter

Iscriviti alla nostra newsletter per suggerimenti tecnici, recensioni, ebook gratuiti e offerte esclusive!

Clicca qui per iscriverti