Frammenti di codice di timestamp Unix

Codice pronto all'uso per lavorare con i timestamp Unix in 9 linguaggi di programmazione e database. Copre l'ottenere il timestamp attuale, la conversione in data e la formattazione dell'output.

Informazioni su questi esempi di codice

Tutti gli esempi usano il valore 1700000000 come timestamp Unix di esempio in secondi, che corrisponde al 15 novembre 2023 06:13:20 UTC. Sostituiscilo con il tuo timestamp. Gli esempi che mostrano i millisecondi usano 1700000000000 (lo stesso istante × 1000).

Secondi vs millisecondi per linguaggio

L'errore più comune è confondere secondi e millisecondi. Usa questo riferimento rapido:

  • Millisecondi (× 1000): JavaScript Date.now(), Java System.currentTimeMillis(), C# DateTimeOffset.UtcNow.ToUnixTimeMilliseconds()
  • Secondi (÷ 1000 per confrontare con JS): Python time.time(), PHP time(), Go time.Now().Unix(), Ruby Time.now.to_i, Rust SystemTime::now().as_secs()
  • SQL: MySQL UNIX_TIMESTAMP() → secondi; PostgreSQL EXTRACT(EPOCH) → secondi con parte frazionaria

Come usare questi snippet in sicurezza

Ogni snippet è volutamente piccolo, così da copiarlo in una console, uno script di migrazione, un test o un handler di API. Prima di usare un valore in produzione, controlla l'unità attesa nel punto in cui il timestamp esce dal tuo codice. Molti bug nascono quando un servizio invia millisecondi e un altro salva secondi senza conversione.

  • Nel codice browser e frontend, aspettati millisecondi salvo diversa indicazione dell'API
  • Nel codice backend, nei log e negli strumenti shell, i secondi Unix sono di solito il default
  • Per i filtri di database, mantieni l'unità coerente su tutte le righe e gli indici
  • Per l'output formattato, preferisci UTC o un fuso IANA esplicito invece del default del server

Scegliere una fonte di verità

Quando più servizi toccano lo stesso orario di un evento, scegli una rappresentazione come fonte di verità e converti ai bordi. Ad esempio, un backend può salvare secondi Unix, un frontend può moltiplicare per 1000 per Date e un report può formattare lo stesso istante come UTC o in un fuso aziendale.