Estoy tratando de convertir nuestra aplicación Rails 2.3 para manejar correctamente las zonas horarias (en este momento todo está en UTC que no es correcto, pero es conveniente!)Almacenamiento correcto de fechas con TimeZone en MySQL DB para una aplicación Rails
tengo estos ajustes en environment.rb:
config.active_record.default_timezone = :utc
config.time_zone = "UTC"
De cara al futuro, en cada solicitud en nuestra aplicación planeo hacer la siguiente configuración para establecer la zona horaria:
Time.zone = user.time_zone
Dónde user.time_zone
es su preferencia elegida (por ejemplo, US Pacific Time
).
Esto funciona bien en la aplicación, pero mi pregunta se relaciona con lo que Rails almacena en el MySQL DB. Si el usuario elige una fecha del 1 de junio de 2009, se almacena en un campo DATETIME
en la base de datos en UTC pero con el desplazamiento de la zona horaria. Por ejemplo, si el usuario ha seleccionado un huso horario GMT+6
, la fecha elegida del 1 de junio de 2009 termina en la base de datos como 2009-06-01 06:00:00 UTC
.
Hubiera esperado que se almacenara como 2009-06-01 00:00:00 UTC
en la base de datos. ¿Es correcto mi razonamiento o Rails está haciendo algo inesperado aquí?
¿Solo necesita mostrar las fechas en la zona horaria del usuario, o es importante almacenarlas específicamente en esa zona horaria? –
Chris Me gustaría almacenarlo en UTC y solo mostrar las fechas en la zona horaria del usuario – Olly