FAQ sui timestamp Unix
Risposte rapide alle domande più comuni sui timestamp Unix — unità, gestione dei fusi, il problema dell'anno 2038, conversioni specifiche per linguaggio e altro.
Domande frequenti
- Che cos'è un timestamp Unix?
- Un timestamp Unix è il numero di secondi trascorsi dall'epoch Unix — il 1° gennaio 1970 alle 00:00:00 UTC. È un intero neutrale rispetto al linguaggio e indipendente dal fuso che identifica in modo univoco qualsiasi momento nel tempo.
- Che cos'è l'epoch Unix?
- L'epoch Unix è il 1° gennaio 1970 alle 00:00:00 UTC. Tutti i timestamp Unix sono misurati in avanti — o all'indietro per i valori negativi — da questo punto di riferimento fisso. La scelta del 1970 fu pratica: era un anno recente e tondo quando Unix veniva progettato ai Bell Labs.
- Qual è la differenza tra un timestamp a 10 e a 13 cifre?
- Un timestamp a 10 cifre (es. 1700000000) rappresenta secondi dall'epoch. Uno a 13 cifre (es. 1700000000000) rappresenta millisecondi. Date.now() di JavaScript restituisce millisecondi; la maggior parte delle chiamate di sistema Unix e linguaggi come Python, Go e PHP restituiscono secondi per impostazione predefinita.
- Perché JavaScript usa millisecondi invece di secondi?
- L'API Date di JavaScript è stata progettata per corrispondere alla risoluzione dei timer di sistema disponibili nel 1995. Usare i millisecondi evita la perdita di precisione per durate inferiori al secondo. Quando lavori con timestamp Unix in secondi generati dal server, moltiplica per 1000 prima di passarli a new Date().
- Come converto un timestamp Unix in una data leggibile in JavaScript?
- Per un timestamp in secondi: new Date(1700000000 * 1000).toISOString(). Per uno in millisecondi: new Date(1700000000000).toISOString(). Entrambi producono stringhe ISO 8601 come '2023-11-15T06:13:20.000Z'. Usa toLocaleString() con un'opzione timeZone per una visualizzazione localizzata.
- I timestamp Unix sono consapevoli del fuso orario?
- No. Un timestamp Unix rappresenta sempre un singolo momento in UTC. Le informazioni sul fuso si applicano solo quando si formatta il timestamp per la visualizzazione. Due dispositivi in fusi diversi produrranno lo stesso timestamp Unix per lo stesso istante.
- Che cos'è il problema dell'anno 2038?
- I sistemi che memorizzano i timestamp Unix come interi con segno a 32 bit possono rappresentare solo valori fino a 2.147.483.647, che corrisponde al 19 gennaio 2038 alle 03:14:07 UTC. Dopo quel momento l'intero va in overflow verso un grande numero negativo. I sistemi moderni a 64 bit non sono interessati, ma i sistemi embedded e i database legacy possono essere ancora a rischio.
- Che cos'è un timestamp Unix negativo?
- Un timestamp Unix negativo rappresenta un momento precedente all'epoch Unix. Per esempio, -86400 è il 31 dicembre 1969 alle 00:00:00 UTC. La maggior parte delle API di data moderne gestisce correttamente i timestamp negativi, ma alcuni sistemi e database più vecchi non li supportano.
- Come ottengo un timestamp Unix in Python?
- Usa import time; int(time.time()) per i secondi. Per un datetime UTC esplicito: import datetime; int(datetime.datetime.now(datetime.timezone.utc).timestamp()). Per i millisecondi: int(time.time() * 1000).
- Quanto è preciso un timestamp Unix?
- Un timestamp Unix standard ha precisione di un secondo. Per una precisione inferiore al secondo, i timestamp in millisecondi (13 cifre) sono comuni nelle API web e in JavaScript. Alcuni sistemi usano microsecondi (16 cifre) o nanosecondi. L'unità appropriata dipende dalla precisione di cui la tua applicazione ha realmente bisogno.