ruby on rails - timezones - DateTime.now o Time.now?
rails timezone (3)
¿Cuál de los dos debería usar en mi aplicación Rails?
DateTime.now or Time.now
¿Hay algún daño al usar ambos en la aplicación?
¿Puede haber alguna diferencia entre los dos en el caso del ejemplo anterior ( now
)? (En mi sistema actual ambos muestran el mismo tiempo)
En referencia a Time.now
(no DateTime.now
):
El objeto creado se creará usando la resolución disponible en el reloj de su sistema, y puede incluir segundos fraccionarios.
a = Time.new #=> Wed Apr 09 08:56:03 CDT 2003
b = Time.new #=> Wed Apr 09 08:56:03 CDT 2003
a == b #=> false
"%.6f" % a.to_f #=> "1049896563.230740"
"%.6f" % b.to_f #=> "1049896563.231466"
Si desea obtener el tiempo en la zona horaria de la aplicación, deberá llamar a Time.zone.now
, así que eso es lo que generalmente uso.
Time.now
y DateTime.now
devolverán una hora en el tiempo del sistema, que a menudo se establece en UTC.
Use (Date)Time.current
lugar de (Date)Time.now
Rails amplía los objetos Time
y DateTime
, e incluye la propiedad current
para recuperar el tiempo en que el entorno Rails está configurado (predeterminado = UTC), a diferencia de la hora del servidor (podría ser cualquier cosa).
Esto es fundamental: siempre debe trabajar en horario UTC, excepto al convertir zonas horarias para la entrada o visualización del usuario, pero muchos sistemas de producción no son UTC de forma predeterminada. (por ejemplo, Heroku está configurado para PST (GMT -8))
Ver artículo here