MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Come convertire la data in UTC in MongoMapper e Ruby/Rails?

Ho ricevuto questa risposta dal gruppo Seattle Brigade -

===

Non ho visto start_date definito nel tuo codice come una chiave in MongoMapper, quindi presumo che tu stia creando il tuo oggetto data, direttamente tramite Ruby o avvolto da Rails. Per quanto ne so, e qualcuno per favore mi corregga, Mongostores risale all'ora UTC in millisecondi dall'epoca. Quindi, quando definisci una chiave con una mappatura :date in MongoMapper, stai avvolgendo un oggetto Time inRuby.

Pertanto, se desideri archiviare una data all'interno di Mongo e non è stata creata da MongoMapper, assicurati di creare un oggetto Time in UTC. MongoMapper viene fornito con un metodo di mixin Date chiamato to_mongo che puoi utilizzare.

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

Ma attenzione al cambio dell'ora.

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

Buona fortuna.

===

E usando

Date.to_mongo(start_date) 

funziona per me.