【问题标题】:Is it possible to change default TimeZone in MongoDB using Rails 3?是否可以使用 Rails 3 更改 MongoDB 中的默认时区?
【发布时间】:2013-01-30 10:05:47
【问题描述】:

我有这样的麻烦:当我创建对象并设置一些日期时间时,它正在将数据库保存在 UTC 时区中。这是一个例子:

//showing full list of object properties 
 Grant _id: 5108ee29e6b564611400000, start_date: 2013-01-30 09:56:27 UTC
 //then showing a.start_date
 Wed, 30 Jan 2013 13:56:27 +0400 

我试图禁止数据库使用 UTC。这是 mongoid.yml:

development:
  options:
    raise_not_found_error: false
  sessions:
    default:
      use_activesupport_time_zone: true
      use_utc: false
      database: test_mongoid_production
      hosts:
        - localhost:27017
      options:
        consistency: :strong

在 application.rb 中:

config.time_zone = 'Moscow'

但它不起作用。

有人可以帮忙解决这个问题吗?

【问题讨论】:

    标签: ruby-on-rails mongodb datetime timezone mongoid


    【解决方案1】:

    您可以更改应用程序的时区,以便 ruby​​ 的日期对象自动配置日期。 MongoDB 将始终以 UTC 存储时间。

    MongoDB 没有关于时区的内部知识。

    【讨论】:

    • 谢谢。还有一个问题:我将表单上的 start_date 设置为 14-00,但是当它保存时 - 它显示为 10 - 00。你能帮我吗?
    • @DenMed 只要您的应用程序提供您的时区,您的应用程序就应该始终显示正确的时区。不幸的是,在 MongoDB 的内部展示中没有真正的方法来解决这个问题 :(,虽然它也很好,因为这意味着你可以在许多时区拥有许多应用程序,并且它们都可以从一个 UTC 日期开始工作,所以它确实有它的也有好处
    • 你是对的,但你看到它从我设置的时间减去 4 小时,然后向我展示,这个时间正好在 TimeZone +4 中。我不知道该怎么办!
    • @DenMed 等一下你想用这个做什么?您知道您的应用程序正确显示它,如您在上面的示例中所示,对吗?你知道 MongoDB 不能使用 UTC 吗?我想说的是确保您的应用具有正确的时区,这有帮助吗?
    • 我展示了不好的例子。在控制台中没问题,但是当我使用表单创建它时 - 它显示错误的时间。例如,我现在创建具有星形时间的对象 - 它减去 4 小时并显示它是我的本地时间,但它不是我的时间。
    【解决方案2】:

    config.time_zone 没有设置“服务器时间”,通常由您的操作系统控制。

    Rails 始终将您的日期以 UTC 格式存储在数据库中(除非您更改其他设置)。

    【讨论】:

    • 我该如何改变这个?它将数据转换为 UTC 并向我显示错误的日期。例如:我创建 start_date : 14-00 它显示我 10 - 00
    猜你喜欢
    • 2012-11-25
    • 1970-01-01
    • 1970-01-01
    • 2013-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-17
    • 2011-09-01
    相关资源
    最近更新 更多