got*_*eep 6 timezone activerecord ruby-on-rails
我有一个由非rails应用程序写入并由rails应用程序读取的数据库.数据库中有一个日期时间字段,此字段中存储的数据存储在东部时间.在我的rails应用程序中,我知道我可以在我的environment.rb文件中设置应用程序的时区config.time_zone = 'Eastern Time (US & Canada)'.但是,rails假定存储在数据库中的数据以UTC格式存储,并在将信息输入和输出数据库时从config.time_zone转换为UTC.
有没有办法告诉rails这个特定字段中的数据,甚至我所有的日期时间字段都是东部时间而不是UTC?
在application.rb中的Rails 3.0.5上,这可以工作:
config.time_zone = 'Central Time (US & Canada)'
config.active_record.default_timezone = :local
Run Code Online (Sandbox Code Playgroud)
我的第一个建议是修复其他应用程序。另一个应用程序应该存储 UTC 偏移量和日期。如果你尝试解决一个问题,你只会制造更多问题。例如,当夏令时结束时会发生什么,那么偏移量会发生变化吗?
话虽这么说,但别无选择 - 我会为一个领域做一些类似的事情created_at:
def created_at_in_eastern
DateTime.parse(self.created_at.strftime("%D %T EST")) if self.created_at
end
Run Code Online (Sandbox Code Playgroud)
或者您可以EDT根据数据的保存方式来使用,只需阅读顶部的免责声明 - 这是一个黑客!
| 归档时间: |
|
| 查看次数: |
3953 次 |
| 最近记录: |