¿Cómo obtendría una marca de tiempo UNIX (número de segundos desde 1970 GMT) de un objeto Date en una aplicación Rails?
Sé que Time#to_i
devuelve una marca de tiempo, pero hacer Date#to_time
y luego obtener la marca de tiempo da como resultado algo que está apagado por aproximadamente un mes (no estoy seguro de por qué ...).
Cualquier ayuda es apreciada, gracias!
Editar: OK, creo que lo descubrí: estaba procesando una fecha varias veces en un bucle, y cada vez que la fecha se movió un poco debido a una falta de coincidencia de zona horaria, lo que finalmente provocó que mi marca de tiempo estuviera un mes libre. Aún así, me interesaría saber si hay alguna manera de hacer esto sin depender Date#to_time
.
fuente
to_utc
date.to_time.utc
es probablemente lo que quiso decir.Recibo lo siguiente cuando lo intento:
La diferencia entre estos dos números se debe al hecho de que
Date
no almacena las horas, minutos o segundos de la hora actual. La conversión de aDate
aTime
dará como resultado ese día, medianoche.fuente
Las opciones sugeridas de usar
to_utc
outc
para corregir el desplazamiento de hora local no funcionan. Para mí, el usoTime.utc()
funcionó correctamente y el código implica menos pasos:vs
Esto es lo que sucede cuando llamas a utc después de usar
Date
...... tan claramente que llamar
to_i
va a dar la marca de tiempo incorrecta.fuente
Solución para Ruby 1.8 cuando tienes un objeto DateTime arbitrario:
fuente
fuente