2008-09-19 13 views
5

Estoy trabajando en una aplicación de Rails que necesita manejar fechas y horas en las zonas horarias de los usuarios. Recientemente lo migramos a Rails 2.1 y agregamos soporte de zona horaria, pero existen numerosas situaciones en las que usamos Time # utc y luego las comparamos con ese tiempo. ¿No sería eso lo mismo que comparar el objeto Time original?¿Cuándo es apropiado usar Time # utc en Rails 2.1?

¿Cuándo es apropiado utilizar Time # utc en Rails 2.1? ¿Cuándo es inapropiado?

Respuesta

7

Si ha establecido:

config.time_zone = 'UTC' 

En su environment.rb (que está ahí por defecto), entonces los tiempos automágicamente se convierten en UTC cuando las reservas de ActiveRecord ellos.

Luego, si configura Time.zone (en un before_filter en application.rb es el lugar habitual) en la zona horaria del usuario, todas las veces se convertirán automágicamente en la zona horaria del usuario desde el almacenamiento utc.

Solo ten cuidado con Time.now.

Véase también:

http://mad.ly/2008/04/09/rails-21-time-zone-support-an-overview/

http://errtheblog.com/posts/49-a-zoned-defense - se puede utilizar el JS aquí para detectar zonas

Espero que ayude.

0

Si su aplicación tiene usuarios en varias zonas horarias, siempre debe almacenar sus horas en UTC (cualquier zona horaria funcionaría, pero debe seguir la convención más común).

Deje que el usuario ingrese en la hora local, pero conviértalo a UTC para almacenar (y comparar, y manipular). Luego, conviértalo desde UTC para mostrarlo en la zona horaria local de cada usuario.

Cuestiones relacionadas