MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Como converter data em UTC no MongoMapper &Ruby/Rails?


Recebi esta resposta do grupo Seattle Brigade -

===

Eu não vi start_date definido em seu código como uma chave no MongoMapper, então vou assumir que você está criando seu próprio objeto de data, seja diretamente via Ruby ou encapsulado por Rails. Até onde eu sei, e alguém por favor me corrija, Mongostores data como hora UTC em milissegundos desde a época. Então, quando você define uma chave com um mapeamento :date no MongoMapper, você está envolvendo um objeto Time em Ruby.

Portanto, se você deseja armazenar uma data dentro do Mongo, e ela não foi criada pelo MongoMapper, certifique-se de criar um objeto Time em UTC. O MongoMapper vem com um método mixin Date chamado to_mongo que você pode 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

Mas cuidado com a mudança de horário.
>> 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

Boa sorte.

===

E usando
Date.to_mongo(start_date) 

funciona para mim.