Ruby on rails Rails似乎在错误的时区为created_at、updated_at值创建对象
我刚刚用一个表单创建了一个新对象,它的更新值和created值是Ruby on rails Rails似乎在错误的时区为created_at、updated_at值创建对象,ruby-on-rails,Ruby On Rails,我刚刚用一个表单创建了一个新对象,它的更新值和created值是 created_at: "2013-04-25 03:22:19", updated_at: "2013-04-25 03:22:19", 然而,这比我现在的位置(PST)提前了约7个小时 如何确保时区与用户从何处创建的时区一致?您的在处创建的值和在处更新的值将从服务器写入数据库,因此它们将始终位于服务器或应用程序的时区中。当服务器处理表单数据并保存到数据库时,它不知道浏览器的时区 您可以使用@lulalala建议的config
created_at: "2013-04-25 03:22:19", updated_at: "2013-04-25 03:22:19",
然而,这比我现在的位置(PST)提前了约7个小时
如何确保时区与用户从何处创建的时区一致?您的
在
处创建的值和在
处更新的值将从服务器写入数据库,因此它们将始终位于服务器或应用程序的时区中。当服务器处理表单数据并保存到数据库时,它不知道浏览器的时区
您可以使用@lulalala建议的config.time\u zone
设置Rails时区
听起来您对在用户的本地时区向用户显示时间很感兴趣。对此,您有两个选项:
- 在注册时向用户询问时区(或指定默认时区并允许用户编辑)
- 使用javascript检测时区并向服务器报告()-不保证正确
Model.created_at.in_time_zone(@current_user.time_zone)
我用
>Time.now.to_s
命令检查irb
时区,时间是正确的,但应用程序将它错误地保存了3个小时。所以
我的解决方案是将config.time\u zone=“Santiago”
添加到config/environments/development.rb
文件中。时区列表是,我的条目是
"Santiago" => "America/Santiago"
您是否设置了
config.time\u zone
设置?请查看use\u zone
——如果您尚未在config/application.rb文件中设置时区,运行rake time:zones:all
,查看您可以将其设置为的有效时区列表。提示:在config/application.rbIt中检查config.time\u zone注释始终以UTC格式存储数据是一种很好的做法,听起来您的应用程序已经在这样做了。如果您希望在用户自己的时区中向用户显示时间,请存储他的时区并在表示层中处理转换。如果我将时区设置为我自己的时区,则不会为每个用户自定义,对吗?我不知道如何执行mchail的建议。如果您只为一个时区运行应用程序,您还可以在application.rb
中为所有环境设置它,如config.time\u zone='Europe/Berlin'
。
"Santiago" => "America/Santiago"