MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Comment convertir la date en UTC dans MongoMapper &Ruby/Rails ?

J'ai eu cette réponse du groupe de la brigade de Seattle -

===

Je n'ai pas vu start_date défini dans votre code comme une clé dans MongoMapper, donc je suppose que vous créez votre propre objet date, soit directement via Ruby, soit enveloppé par Rails. Autant que je sache, et que quelqu'un me corrige s'il vous plaît, Mongostores date en temps UTC en millisecondes depuis l'époque. Ainsi, lorsque vous définissez une clé avec un mappage :date dans MongoMapper, vous encapsulez un objet Time dans Ruby.

Par conséquent, si vous souhaitez stocker une date à l'intérieur de Mongo et qu'elle n'a pas été créée par MongoMapper, assurez-vous de créer un objet Time en UTC. MongoMapper est livré avec une méthode mixin Date appelée to_mongo que vous pouvez utiliser.

>> 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

Mais attention au changement d'heure.

>> 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

Bonne chance.

===

Et en utilisant

Date.to_mongo(start_date) 

ça marche pour moi.