timezone - Rails 3 时区错误

标签 timezone ruby-on-rails-3

我正在为 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/

相关文章:

ios - 在 Swift 3 中使用公共(public)枚举来控制时区

Java 8 时区转换

c# - Mac OSX 上的 .Net C# 日期时间与 Debian Linux 上的比较

ruby-on-rails-3 - 没有找到 omniauth 开发者策略的路线

ruby-on-rails-3 - acl9 has_many 通过实现

timezone - Sequelize createdAt 和 updatedAt 时间戳错误

mysql - 夏令时问题

ruby-on-rails-3 - Haml Bootstrap 搜索表单

ruby-on-rails-3 - 范围内的实例方法

ruby-on-rails - Rspec 测试实例变量与用户创建