Rails active_record 保存 datetime 类型字段的问题

chucai · 2012年05月22日 · 最后由 chucai 回复于 2012年05月23日 · 2880 次阅读

问题如下: 我定义了一个 Model,暂时叫做 Circle 吧,Circle 有一个属性,stime: datetime html 提交数据:

circle => { 'stime' => '"2012-05-22 23:53:24"'}

服务器端的 code

circle = Circle.new(params[:circle])

但是保存在数据库中的 stime 居然是

2012-05-22 15:53:24

修改 controller 层代码

... ...
circle.stime = DateTime.parse params['cirlce']['stime']
circle.save
... ...

保存的时间才是 正确的 这个问题是因为 activesupport 造成的,如何从根本解决这个问题?

ActiveSupport::CoreExtensions::Time::Conversions::DATE_FORMATS

#1 楼 @lying325 我设置了时区,但是还是不行

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

#3 楼 @willmouse 大善,正解

config.time_zone = 'Beijing'
config.active_record.default_timezone = :local
config.active_record.time_zone_aware_attributes = false # this is important!
需要 登录 后方可回复, 如果你还没有账号请 注册新账号