Disculpe si esto es un problema de novato:Cómo guardar correctamente una zona horaria con Ruby y MongoId?
Tengo una aplicación donde los usuarios pueden establecer sus propias zonas horarias en su perfil.
Cuando alguien añade una alineación (terminología aplicación específica), hago lo siguiente:
time = ActiveSupport::TimeZone.new(user.timezone).parse(
"Wednesday, 26 October, 2011 13:30:00"
)
# This outputs: 2011-10-26 13:30:00 +0200 - valid according to the user selected TZ
entonces guardar la alineación:
Lineup.create({
:date => time.gmtime,
:uid => user._id,
:pid => product._id
})
Esto debería (en teoría) la fecha como gmtime, pero obtengo lo siguiente al ver el registro:
{
"_id": ObjectId("4e9c6613e673454f93000002"),
"date": "Wed, 26 Oct 2011 13: 30: 00 +0200",
"uid": "4e9b81f6e673454c8a000001",
"pid": "4e9c6613e673454f93000001",
"created_at": "Mon, 17 Oct 2011 19: 29: 55 +0200"
}
Como puede ver, el campo de fecha está escrito ong: aún mantiene la zona horaria del usuario, debe ser GMT, no específica de la zona horaria.
Si time.gmtime de salida, me sale el momento adecuado (que se salven):
2011-10-26 11:30:00 UTC (correct)
Alguna idea de cómo salvar a la fecha GMT por lo que en realidad se ahorra la fecha GMT?
Esto también funciona con DateTime en las versiones actuales de Mongoid (estoy en 2.4.7). Ver https://github.com/mongoid/mongoid/issues/1135 –