Ruby Snippets

Trechos de timestamp Unix em Ruby

Exemplos de Ruby para obter segundos Unix, derivar milissegundos, converter timestamps em objetos Time, formatar a saída UTC e parsear strings de data.

Current Unix timestamp (seconds)
Time.now.to_i
Current Unix timestamp (milliseconds)
(Time.now.to_f * 1000).round
Time from Unix timestamp
Time.at(1700000000)
Time in specific timezone
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)
Formatted string
Time.at(1700000000).strftime("%Y-%m-%d %H:%M:%S")
Timestamp from Time
require "time"
Time.parse("2023-11-15T06:13:20Z").to_i

Noções básicas de marcas de tempo em Ruby

O Time.now.to_i do Ruby retorna segundos Unix. Use Time.now.to_f quando precisar de frações de segundo ou quiser calcular milissegundos para APIs que esperam marcas de tempo no estilo JavaScript.

Convertendo e formatando Time em Ruby

Use Time.at(timestamp) para criar um objeto Time a partir de segundos Unix. Chame utc antes de formatar quando precisar de uma saída estável que não dependa do fuso local da máquina.

Notas de produção para Ruby

Os métodos Time do Ruby são concisos, mas os padrões de fuso podem variar entre laptops, servidores e workers em segundo plano. Mantenha as marcas de tempo persistidas em segundos Unix ou strings UTC e depois aplique o fuso da aplicação na camada de apresentação. Ao analisar a entrada do usuário, inclua o deslocamento ou o fuso para que as regras de horário de verão não sejam adivinhadas incorretamente.

  • Use Time.now.to_i para segundos Unix
  • Use (Time.now.to_f * 1000).round para valores em milissegundos
  • Use Time.at(seconds).utc para uma saída UTC estável
  • Use Time.parse apenas com strings que incluam um fuso ou um deslocamento

FAQ

Time.now.to_i retorna milissegundos?
Não. Time.now.to_i retorna segundos Unix inteiros. Use Time.now.to_f se precisar de frações de segundo ou quiser derivar milissegundos.
Por que chamar utc antes de formatar?
utc torna a saída independente do fuso local da máquina. Isso ajuda com logs, payloads de API e expectativas de teste.
Como verifico uma marca de tempo em Ruby?
Use Time.at(seconds).utc.iso8601 e compare o resultado com o momento UTC esperado antes de escrever o valor em um job, API ou banco de dados.