首页 文章

Rails似乎是在created_at,updated_at值的错误时区创建对象

提问于
浏览
7

我刚刚使用表单创建了一个新对象,其updated_at和created_at值为

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

然而,这比我(PST)提前约7个小时 .

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

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

2 回答

  • 14

    您的 created_atupdated_at 值是从服务器写入数据库的,因此它们将始终位于您的服务器_773463的时区 . 当服务器处理表单数据并保存到您的数据库时,它不知道浏览器的时区 .

    您可以使用 config.time_zone 设置Rails时区,如@lulalala建议的那样 .

    听起来您有兴趣在原生时区向用户显示时间 . 你有两个选择:

    将时区保存为用户属性后,您可以向用户显示您的时间,如下所示:

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

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

    我的解决方案是将 config.time_zone = "Santiago" 添加到 config/environments/development.rb 文件中 . 时区列表是here,我的条目是

    "Santiago" => "America/Santiago"
    

相关问题