Cos'è un timestamp Unix? Una spiegazione completa del tempo epoch
Risposta rapida
Un timestamp Unix è il numero di secondi trascorsi dal 1 gennaio 1970, 00:00:00 UTC (l'epoca Unix). È indipendente dal fuso orario e facile da confrontare. JavaScript utilizza millisecondi (13 cifre); Unix e la maggior parte di APIs utilizzano i secondi (10 cifre). Utilizza il nostro convertitore di timestamp gratuito per convertire tra timestamp e date leggibili dall'uomo.
Introduzione
Un timestamp Unix (chiamato anche tempo dell'epoca Unix, tempo POSIX o tempo Unix) è il numero di secondi trascorsi dal 1 gennaio 1970, 00:00:00 UTC, un momento noto come epoca Unix. I timestamp sono ampiamente utilizzati nei sistemi operativi, nei database, nei log e in APIs perché sono indipendenti dal fuso orario (sempre UTC), facili da confrontare (semplice confronto di numeri interi) e compatti. Tuttavia, non sono leggibili dall'uomo: 1693526400 non significa nulla senza conversione. Questa guida spiega cosa sono i timestamp e come utilizzarli.
Passo dopo passo
-
Comprendere l'epoca di Unix
L'epoca Unix è il 1 gennaio 1970, 00:00:00 Tempo Coordinato Universale (UTC). Un timestamp Unix è il conteggio dei secondi da questo momento. I timestamp positivi sono successivi all'epoca; prima di esso sono presenti timestamp negativi (supportati da alcuni sistemi).
-
Distinguere i secondi dai millisecondi
I timestamp Unix sono generalmente espressi in secondi (10 cifre a partire dal 2026, ad esempio 1693526400). Date.now() e Date.getTime() di JavaScript restituiscono millisecondi (13 cifre, ad esempio 1693526400000). Controlla sempre quale unità si aspetta un API: mescolarle è il bug di timestamp più comune.
-
Comprendere l'indipendenza dal fuso orario
I timestamp Unix sono sempre UTC. Non dipendono dal fuso orario dell'utente. Per visualizzare un timestamp in un fuso orario specifico, convertilo in una data e applica la differenza di fuso orario. Ciò rende i timestamp ideali per l'archiviazione e il confronto.
-
Scopri il problema dell'anno 2038
I sistemi che utilizzano interi con segno a 32 bit per i timestamp andranno in overflow il 19 gennaio 2038, 03:14:07 UTC: il "problema Y2038". I sistemi che utilizzano numeri interi a 64 bit o numeri JavaScript (float a 64 bit) non sono interessati. I sistemi moderni sono in gran parte sicuri per Y2038, ma i sistemi embedded legacy potrebbero non esserlo.
Esempi
Timestamp per una data nota
Ingresso: 2023-09-01 00:00:00 UTC
Produzione: 1693526400 (secondi) o 1693526400000 (millisecondi)
L'epoca di Unix
Ingresso: 1970-01-01 00:00:00 UTC
Produzione: 0
Confine del problema Y2038
Ingresso: 2038-01-19 03:14:07 UTC
Produzione: 2147483647 (intero con segno massimo a 32 bit)
Problemi comuni
- Mescolare secondi e millisecondi: JavaScript utilizza i millisecondi (Date.now()), Unix e la maggior parte di APIs utilizzano i secondi. Dividere per 1000 per convertire i ms in secondi; moltiplicare per 1000 per il contrario.
- Confusione del fuso orario: i timestamp sono UTC. Durante la visualizzazione, converti nel fuso orario locale dell'utente o specifica UTC. Non applicare offset al timestamp grezzo.
- Il problema dell'anno 2038: i timestamp interi con segno a 32 bit vanno in overflow il 19-01-2038. Utilizza numeri interi a 64 bit o numeri JavaScript per evitarlo.
- Timestamp negativi: le date precedenti al 01-01-1970 hanno timestamp negativi. Alcuni sistemi non li supportano.
Suggerimenti
- Controlla sempre se un API prevede secondi o millisecondi: questo è il bug di timestamp più comune.
- Utilizza stringhe ISO 8601 (ad esempio, "2023-09-01T00:00:00Z") per timestamp leggibili dall'uomo in APIs; utilizzare l'epoca Unix per l'archiviazione e il calcolo.
- JavaScript Date.now() restituisce millisecondi; dividere per 1000 e floor per ottenere i secondi.
- Utilizza il nostro convertitore di timestamp per convertire tra timestamp e date leggibili dall'uomo nel tuo browser.