Frammenti di timestamp Unix in Ruby
Esempi Ruby per ottenere secondi Unix, derivare millisecondi, convertire timestamp in oggetti Time, formattare l'output UTC e parsare stringhe di data.
Time.now.to_i(Time.now.to_f * 1000).roundTime.at(1700000000)require "time"
Time.at(1700000000).utc.strftime("%Y-%m-%d %H:%M:%S")
# With tzinfo gem:
require "tzinfo"
tz = TZInfo::Timezone.get("America/New_York")
tz.utc_to_local(Time.at(1700000000).utc)Time.at(1700000000).strftime("%Y-%m-%d %H:%M:%S")require "time"
Time.parse("2023-11-15T06:13:20Z").to_iBasi dei timestamp in Ruby
Il Time.now.to_i di Ruby restituisce secondi Unix. Usa Time.now.to_f quando ti servono frazioni di secondo o vuoi calcolare i millisecondi per API che si aspettano timestamp in stile JavaScript.
Convertire e formattare Time in Ruby
Usa Time.at(timestamp) per creare un oggetto Time dai secondi Unix. Chiama utc prima della formattazione quando ti serve un output stabile che non dipenda dal fuso locale della macchina.
Note di produzione per Ruby
I metodi Time di Ruby sono concisi, ma i default dei fusi possono variare tra laptop, server e worker in background. Mantieni i timestamp persistiti in secondi Unix o stringhe UTC, poi applica il fuso dell'applicazione nel livello di presentazione. Quando analizzi l'input dell'utente, includi l'offset o il fuso così le regole dell'ora legale non vengono indovinate in modo errato.
- Usa Time.now.to_i per secondi Unix
- Usa (Time.now.to_f * 1000).round per valori in millisecondi
- Usa Time.at(seconds).utc per un output UTC stabile
- Usa Time.parse solo con stringhe che includono un fuso o un offset
FAQ
- Time.now.to_i restituisce millisecondi?
- No. Time.now.to_i restituisce secondi Unix interi. Usa Time.now.to_f se hai bisogno di frazioni di secondo o vuoi derivare i millisecondi.
- Perché chiamare utc prima di formattare?
- utc rende l'output indipendente dal fuso orario locale della macchina. È utile per log, payload API e aspettative dei test.
- Come verifico un timestamp Ruby?
- Usa Time.at(seconds).utc.iso8601 e confronta il risultato con il momento UTC atteso prima di scrivere il valore in un job, un'API o un database.