2013-04-25 33 views
7

我只是用一种形式,它的updated_at和created_at值创建一个新对象,对象是Rails的似乎是建立在created_at错误的时区,的updated_at值

created_at: "2013-04-25 03:22:19", updated_at: "2013-04-25 03:22:19", 

但是这是未来的地方〜7小时我是(PST)。

Time.now.to_s 
=> "2013-04-24 20:23:12 -0700" 

如何确保时区与用户创建它的位置一致?

+0

您是否设置了'config.time_zone'设置? – lulalala 2013-04-25 03:30:31

+0

查看'use_zone' [docs](http://api.rubyonrails.org/classes/Time.html#method-c-use_zone)---如果您尚未在config/application.rb中设置时区文件,运行'rake time:zones:all'获取您可以设置的有效时区列表。 – Tomanow 2013-04-25 03:36:34

+0

提示:在config/application.rb中检查config.time_zone注释 – 2013-04-25 03:36:36

回答

12

您的created_atupdated_at值是从服务器写入数据库的,因此它们将始终位于服务器或应用程序的时区。在服务器处理表单数据并保存到数据库时,它不知道浏览器的时区。

您可以设置使用config.time_zone Rails的时区,为@lulalala建议。

听起来好像您有兴趣在自己的本地时区向用户显示时间。您有此两种选择:

一旦你保存为用户属性的时区,你可以像这样显示你的时间给你的用户:

Model.created_at.in_time_zone(@current_user.time_zone) 
2

我检查irb时区与命令> Time.now.to_s和时间是正确的,但应用程序保存错误3小时。所以..

对我来说,解决办法是添加config.time_zone = "Santiago"config/environments/development.rb文件。时区列表是here,我的输入是

"Santiago" => "America/Santiago" 
相关问题