我正在为 Rails 3 beta 中的时区支持而苦苦挣扎,我想知道这是一个错误还是我做错了什么。他的问题是:
> Time.zone = 'Madrid' # 现在是 GMT+2
=>“马德里”
> c = Comment.new
=> #<评论编号:nil,标题:“”,pub_at:nil>
> c.pub_at = Time.zone.parse('10:00:00')
=> 2010 年 5 月 31 日星期一 10:00:00 CEST +02:00
> c.保存
> c
=> #<评论编号:3,标题:“”,pub_at:“2010-05-31 08:00:00">
> c.重新加载
=> #<评论编号:3,标题:“”,pub_at:“2010-05-31 08:00:00">
ruby-1.8.7-p249 > c.pub_at
=> 2010 年 5 月 31 日星期一 13:00:00 CEST +02:00
如您所见,pub_at 属性已正确存储在数据库中,但在检索它时会增加 3 小时,我怀疑这是因为它使用的是 GMT-3 中的本地机器时区。
rails 2.3.5 中相同的命令序列可以完美运行。
有什么技巧吗?我应该报告罚单吗?
最佳答案
如果我没记错的话,所有日期都以 UTC 格式存储到数据库中。
而且 rails 和 console 不会以相同的方式处理日期!
因此,您应该尝试通过将时区设置到您的 application.rb 中来在您的应用程序中测试它
config.local_zone = 'Madrid'
然后打印值!你应该看到正确的时间。
希望这有帮助
关于timezone - Rails 3 时区错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2944018/