sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Cómo convertir la fecha en UTC en MongoMapper y Ruby/Rails?

Recibí esta respuesta del grupo de la Brigada de Seattle -

===

No vi start_date definido en su código como una clave en MongoMapper, así que asumiré que está creando su propio objeto de fecha, ya sea directamente a través de Ruby o envuelto por Rails. Hasta donde yo sé, y que alguien me corrija, las fechas de Mongostores son la hora UTC en milisegundos desde la época. Entonces, cuando define una clave con una asignación de fecha en MongoMapper, está envolviendo un objeto de tiempo en Ruby.

Por lo tanto, si desea almacenar una fecha dentro de Mongo y no fue creada por MongoMapper, asegúrese de crear un objeto de tiempo en UTC. MongoMapper viene con un método de combinación de fechas llamado to_mongo que puede usar.

>> Time.now.utc
=> Fri Jan 28 03:47:50 UTC 2011
>> require 'date'
=> true
>> date = Date.today
=> #<Date: 4911179/2,0,2299161>
>> Time.utc(date.year, date.month, date.day)
=> Thu Jan 27 00:00:00 UTC 2011
>> require 'rubygems'
=> true
>> require 'mongo_mapper'
=> true
>> Date.to_mongo(date)
=> Thu Jan 27 00:00:00 UTC 2011

Pero cuidado con el cambio de hora.

>> Date.to_mongo(Time.now)
=> Thu Jan 27 00:00:00 UTC 2011
>> Date.to_mongo(Time.now.utc)
=> Fri Jan 28 00:00:00 UTC 2011

Buena suerte.

===

Y usando

Date.to_mongo(start_date) 

funciona para mí.