私はシアトル旅団グループからこの答えを得ましたあなた自身の日付オブジェクトは、Ruby経由で直接、 またはRailsでラップされます。私が知る限り、誰かが私を修正してください。 は、エポックからのミリ秒単位のUTC時間として日付を格納します。したがって、 キーをMongoMapperのa:dateマッピングで定義すると、Timeオブジェクトが Rubyにラップされます。
したがって、MongoMapperによって作成された ではない日付をMongo内に保存する場合は、UTCでTimeオブジェクトを作成してください。 MongoMapperにはto_mongoというDate mixinメソッドが付属しています。
>> 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
しかし、時間の変化を見てください。
>> 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
幸運。
===
そして
Date.to_mongo(start_date)
を使用することによって、それは私のために動作します。
出典
2011-01-28 05:15:16
Mei
try Time.new(開始日)、start_dateはどこから来たのですか?それは方法ですか? – andrea
私はDateからUTC Timeへのstart_dateの変換を断念しました。 start_date(a Date)をstart_date.to_sを使用して文字列として保存します。 – Mei