rails活动记录时区

rails active record time zone

本问题已经有最佳答案,请猛点这里访问。

我一直在处理一个Rails项目,当创建对象时,我需要准确的时间在字段中创建。我在applicaiton.rb中尝试过这些方法。

1
2
config.time_zone = 'Chennai'
config.active_record.default_timezone = :local

当我在控制台中尝试时,它显示出

1
2
3
4
Time.now
=> 2014-08-28 21:31:31 +0530
m.created_at
=> Thu, 28 Aug 2014 21:28:26 IST +05:30

但问题是当我取一个数据库对象时,创建的

1
 created_at:"2014-08-28 15:58:26"

Rails将所有时间戳存储在数据库的UTC中。当您在控制台上键入这些命令时,它会将时间戳转换为您的特定时区。

http://api.rubyonrails.org/classes/activerecord/timestamp.html

一、你的具体案件,2014-08-28 15:58:26 UTC2014-08-28 21:28:26 IST相同。

将所有时间戳保存为UTC会使数据保持一致,并且不存在歧义。然后,您可以根据您选择的时区进行所有转换。