MongoDB:为什么这些Date对象是不同的

时间:2014-03-19 17:17:54

标签: ruby mongodb mongoid

我有兴趣在MongoDB日期字段中获取时区偏移量。在一台机器上使用MongoDB 2.4.9,我看到以下内容,这是我希望存储日期的方式:

NOVUSNYCLK67(mongod-2.4.9) test_salat> db.scala_date_test_1.find().toArray()
[
  {
    "_id": ObjectId("5329bf52e4b089adba4e75ec"),
    "_typeHint": "com.novus.salat.test.model.Neville",
    "ennui": true,
    "asOf": ISODate("2014-03-19T12:01:22.355-0400")
  }
]

请注意此处-0400的{​​{1}}片段。在另一台机器上,它看起来像以下(错误的方式):

ISODate()

我使用> db.scala_date_test_1.find().toArray() [ { "_id" : ObjectId("5329c755c026b6d16dc5972b"), "_typeHint" : "com.novus.salat.test.model.Neville", "ennui" : true, "asOf" : ISODate("2014-03-19T16:35:33.474Z") } ] 来保留这些日期(Mongoid gem),但我只是想知道如何在我的日期中获取时区偏移量,以便它们的格式如下:

Ruby

并不喜欢:

"asOf": ISODate("2014-03-19T12:01:22.355-0400")

1 个答案:

答案 0 :(得分:0)

来自documentation

  

配置选项

     

Mongoid目前还支持以下配置选项   在mongoid.yml或以编程方式提供(默认为   括号)。

     

...略...

     
      
  • use_activesupport_time_zone(true):在Rails应用程序中将告诉Mongoid将应用程序中的所有时间转换为本地定义的   Active Support中的时区。
  •   
  • use_utc(false):指示Mongoid在所有情况下都将所有时间转换为UTC时间。
  •   

与您的mongoid.yml一起玩,为您配置正确的选项。另请参阅此问题:How to save a timezone correctly with Ruby and MongoId?

  

您可能还想在config / mongoid.yml

中设置以下内容
defaults: &defaults
  use_utc: false
  use_activesupport_time_zone: true
     

这听起来违反直觉,但这是目前的做法   mongoid使用UTC作为默认时区。