Fragmentos de timestamp Unix en Ruby
Ejemplos de Ruby para obtener segundos Unix, derivar milisegundos, convertir timestamps en objetos Time, formatear la salida UTC y parsear cadenas de fecha.
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_iConceptos básicos de marcas de tiempo en Ruby
El Time.now.to_i de Ruby devuelve segundos Unix. Usa Time.now.to_f cuando necesites fracciones de segundo o quieras calcular milisegundos para API que esperan marcas de tiempo al estilo de JavaScript.
Convertir y formatear Time en Ruby
Usa Time.at(timestamp) para crear un objeto Time a partir de segundos Unix. Llama a utc antes de formatear cuando necesites una salida estable que no dependa de la zona horaria local de la máquina.
Notas de producción para Ruby
Los métodos Time de Ruby son concisos, pero los valores predeterminados de zona horaria pueden variar entre portátiles, servidores y workers en segundo plano. Mantén las marcas de tiempo persistidas en segundos Unix o cadenas UTC, y luego aplica la zona horaria de la aplicación en la capa de presentación. Al analizar entrada de usuario, incluye el desfase o la zona horaria para que las reglas de horario de verano no se adivinen incorrectamente.
- Usa Time.now.to_i para segundos Unix
- Usa (Time.now.to_f * 1000).round para valores en milisegundos
- Usa Time.at(seconds).utc para una salida UTC estable
- Usa Time.parse solo con cadenas que incluyan una zona horaria o un desfase
FAQ
- ¿Time.now.to_i devuelve milisegundos?
- No. Time.now.to_i devuelve segundos Unix enteros. Usa Time.now.to_f si necesitas fracciones de segundo o quieres derivar milisegundos.
- ¿Por qué llamar a utc antes de formatear?
- utc hace que la salida sea independiente de la zona horaria local de la máquina. Eso ayuda con los logs, las cargas útiles de API y las expectativas de prueba.
- ¿Cómo verifico una marca de tiempo en Ruby?
- Usa Time.at(seconds).utc.iso8601 y compara el resultado con el momento UTC esperado antes de escribir el valor en un trabajo, una API o una base de datos.