您的位置:首页 > 大数据 > 人工智能

完美解决rails中国时区时间设置

2016-08-09 17:33 561 查看


解释4个时区设置的不同

config.active_record.default_timezone

config.time_zone

Time.zone

ENV['TZ']

分别解释如下:
ENV['TZ']
这个变量指的是服务器系统变量,ubuntu下可以用cat /etc/timezone来查看
当这个值为 Asia/Shanghai时, 显示就是中国时间。
对于ruby/rails来说,这个值决定 Time.now的显示时间
config.time_zone
这个值是rails系统对显示时间的默认设置,可以通过 rake time:zones:all 列出所有可以设置的时区
一般来说把这个设置为 'Beijing'
Time.zone
这个是设置最终处理显示的时区,可以覆盖config.time_zone,参数和config.time_zone一样
可以参考 railscasts的这篇 Time Zones in Rails 2.1
config.active_record.default_timezone
这里就是全文的关键了!
这个default_timezone是决定active_record对数据库交互的时区设置,也就是影响created_at和updated_at在数据库的记录时间。

只有两个参数:utc和:local, rails初始化时默认是utc,所以保存到数据库的时间是utc时间。



总结

要在界面和数据库都很好的显示处理中国时区时间,编辑/path/to/site/config/application.rb(rails2是environment.rb), 加入

config.active_record.default_timezone = :local
config.time_zone = 'Beijing'


完美解决rails中国时区时间设置
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: