MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Wie konvertiere ich Datum in UTC in MongoMapper &Ruby/Rails?

Ich habe diese Antwort von der Seattle Brigade-Gruppe erhalten -

===

Ich habe nicht gesehen, dass start_date in Ihrem Code als Schlüssel in MongoMapper definiert ist, also gehe ich davon aus, dass Sie Ihr eigenes Datumsobjekt erstellen, entweder direkt über Ruby oder von Rails umschlossen. Soweit ich weiß, und bitte korrigiert mich jemand, datiert Mongostores als UTC-Zeit in Millisekunden seit der Epoche. Wenn Sie also einen Schlüssel mit einer :date-Zuordnung in MongoMapper definieren, packen Sie ein Time-Objekt in Ruby ein.

Wenn Sie also ein Datum in Mongo speichern möchten und es nicht von MongoMapper erstellt wurde, stellen Sie sicher, dass Sie ein Time-Objekt in UTC erstellen. MongoMapper enthält eine Date-Mixin-Methode namens to_mongo, die Sie verwenden können.

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

Aber achten Sie auf die Zeitumstellung.

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

Viel Glück.

===

Und mit

Date.to_mongo(start_date) 

bei mir funktioniert es.