Millisecondi epoch in data: convertire timestamp a 13 cifre e valori long

Una guida per convertire i millisecondi epoch in date leggibili. Copre i timestamp a 13 cifre, Date di JavaScript, i valori long di Java, i millisecondi vs secondi e perché l'unità sbagliata produce date del 1970 o molto lontane.

Cosa sono i millisecondi epoch

I millisecondi epoch contano i millisecondi dal 1° gennaio 1970 alle 00:00:00 UTC. Usano lo stesso epoch Unix dei secondi Unix, ma con tre cifre di precisione in più. Un valore moderno di millisecondi epoch ha di solito 13 cifre, come 1700000000000.

Come convertire i millis in data

Se il valore è già in millisecondi, JavaScript Date può leggerlo direttamente. Se lo strumento ricevente si aspetta secondi, dividi prima per 1000. L'errore principale è moltiplicare o dividere al confine sbagliato.

  • JavaScript: new Date(1700000000000).toISOString()
  • Milliseconds to seconds: Math.floor(1700000000000 / 1000)
  • Seconds to milliseconds: 1700000000 * 1000
  • Java Instant: Instant.ofEpochMilli(1700000000000L)
  • Python: datetime.fromtimestamp(ms / 1000, tz=timezone.utc)

Long in data in Java e database

Le ricerche «long in data» arrivano spesso da Java, Kotlin, Android o export di database in cui un timestamp è salvato come intero a 64 bit. Il valore può essere in millisecondi epoch, ma anche in secondi, microsecondi o nanosecondi. Controlla il numero di cifre prima di convertire.

  • 10 cifre: probabilmente secondi Unix
  • 13 cifre: probabilmente millisecondi Unix o long Java in millisecondi
  • 16 cifre: probabilmente microsecondi
  • 19 cifre: probabilmente nanosecondi
  • Nomina sempre le colonne con l'unità, come created_at_ms

Perché i millisecondi diventano date strane

Un valore in millisecondi trattato come secondi diventa una data molto lontana nel futuro. Un valore in secondi trattato come millisecondi diventa una data vicina al gennaio 1970. Le cifre sono la diagnosi più rapida.

  • 1700000000000 come millisecondi = 2023-11-14 22:13:20 UTC
  • 1700000000000 come secondi = intorno all'anno 55840, a seconda della libreria
  • 1700000000 come secondi = 2023-11-14 22:13:20 UTC
  • 1700000000 come millisecondi = 1970-01-20 16:13:20 UTC

FAQ sui millisecondi epoch

Il tempo epoch in ms è lo stesso del timestamp Unix?
Usa lo stesso epoch, ma l'unità è il millisecondo invece del secondo. Il timestamp Unix classico di solito intende secondi.
Quante cifre ha un timestamp in millisecondi epoch?
Per le date attuali, i millisecondi epoch hanno di solito 13 cifre.
JavaScript usa millisecondi o secondi?
JavaScript Date usa millisecondi. Date.now() restituisce millisecondi epoch.
Come converto un timestamp long Java in data?
Se il long è in millisecondi epoch, usa Instant.ofEpochMilli(value); se è in secondi epoch, usa Instant.ofEpochSecond(value). Controlla prima il numero di cifre: 13 = millisecondi, 10 = secondi.