注释掉了config.time_zone = 'UTC'

原来在rails 2.0.2下搞程序,时间都是对的,用了rails 2.3.2后,由于时间格式化一直用的是nice形式的时间格式(刚刚、XX分钟前、XX小时前),没注意到时间实际上是8小时前的时间,今天突然发现数据库里每条记录的时间竟然是8小时前的。。。吃惊不小。

 

查了一下,有篇翻译的文章写的挺全的:http://t0uch.iteye.com/blog/184194

原来是由于environment.rb文件中有个设定:config.time_zone = 'UTC'。

于是,赶紧去控制台执行:rake time:zones:local


 

立即把environment.rb中的config.time_zone设为:config.time_zone = 'Beijing',重启服务器,刷新网页,一切OK了,时间显示正常。

翻看数据库,发现表里的时间没变,还是UTC的时间,8小时前,这怎么行呢?

因为程序中有些地方不得不使用find_by_sql,而且中间会有时间比较条件,所以,绝不能用8小时前这种UTC时间,怎么办?

翻看原来的rails 2.0.2下的工程,发现其中的config.time_zone设定是被注释掉的,于时回到当前工程,将config.time_zone设定注释掉,重启服务器,刷新网页,插入一条记录,看看数据库,时间是当前系统时间,再看看页面,是直接取得数据库里存储的时间,哈哈,终于一切OK啦!爽!

 

PS.如果表中存在设定了UTC时区时的数据,在对这样的数据进行修改时,updated_at不会自动更新。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值