【发布时间】:2015-09-25 12:24:01
【问题描述】:
我正在使用 Rails 应用程序从旧应用程序访问数据库。此应用程序使用欧洲/马德里时区存储所有日期时间字段。
我试图在我的 application.rb 中设置它:
config.time_zone = 'Madrid'
config.active_record.default_timezone = :local
不幸的是,它没有按我的预期工作。看起来 Rails 正在使用我系统的时区( America/Sao_Paulo )。所以一个日期存储为:
2015-09-09 18:38:01
在 Rails 中会显示 5 小时的差异:
2015-09-09 23:38:01
这是圣保罗和马德里的区别。它也应该在 Rails 中显示 18:38:01,因为我的应用的默认时区是马德里。
有没有办法在不更改我的操作系统时区的情况下强制使用 ActiveRecord 时区?
--- 编辑---
这是我得到的输出:
2.1.3 :004 > Time.zone.name
=> "Madrid"
2.1.3 :005 > LogSent.last.sent_date
LogSent Load (0.4ms) SELECT `log_sent`.* FROM `log_sent` ORDER BY `log_sent`.`id` DESC LIMIT 1
=> Wed, 09 Sep 2015 23:38:01 CEST +02:00
我期待“2015 年 9 月 9 日星期三 18:38:01 CEST +02:00”,这是存储在马德里时区数据库中的值。
【问题讨论】:
-
@NickM 我已经有了,但它不起作用。检查此pastebin.com/BQnE1G55。它应该返回“Wed, 09 Sep 2015 18:38:01 CEST +02:00”(存储在数据库中的值,在马德里时区)而不是“Wed, 09 Sep 2015 23:38:01 CEST +02:00”
标签: ruby-on-rails ruby-on-rails-4 rails-activerecord