`
jsntghf
  • 浏览: 2476349 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

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

阅读更多

解释4个时区设置的不同:


config.active_record.default_timezone
config.time_zone
Time.zone
ENV['TZ']

 

分别解释如下:

 

1、ENV['TZ']

 

这个变量指的是服务器系统变量,ubuntu下可以用cat /etc/timezone来查看。当这个值为Asia/Shanghai时,显示的就是中国时间。

 

对于ruby/rails来说,这个值决定Time.now的显示时间。

 

2、config.time_zone

 

这个值是rails系统对显示时间的默认设置,可以通过rake time:zones:all列出所有可以设置的时区,一般来说把这个设置为Beijing。

 

3、Time.zone

 

这个是设置最终处理显示的时区,可以覆盖config.time_zone,参数和config.time_zone一样。

 

4、config.active_record.default_timezone

 

这个default_timezone是决定active_record对数据库交互的时区设置,也就是影响created_at和updated_at在数据库的记录时间。

 

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

 

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

 

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

 

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

分享到:
评论
2 楼 a420144030 2013-05-17  
请教一个问题按你的方法设置的但是同一张表显示的时间不一样
redmine_time            created_at
2013-05-17 02:55:00     2013-05-17 10:41:28(这个是当前时间)
这怎么处理呀,
1 楼 hexawing 2013-03-18  
果然完美了,厉害!

相关推荐

Global site tag (gtag.js) - Google Analytics