gpt4 book ai didi

ruby-on-rails - Rails 似乎在错误的时区为 created_at、updated_at 值创建对象

转载 作者:行者123 更新时间:2023-12-04 07:35:45 27 4
gpt4 key购买 nike

我刚刚使用表单创建了一个新对象,它的 updated_at 和 created_at 值是

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

然而,这比我现在的位置(太平洋标准时间)早了大约 7 小时。
Time.now.to_s
=> "2013-04-24 20:23:12 -0700"

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

最佳答案

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

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

听起来您有兴趣向用户显示其本地时区的时间。为此,您有两种选择:

  • 在注册时询问您的用户时区(或指定一个默认时区并允许用户对其进行编辑)
  • 使用 javascript 检测时区并报告给您的服务器 ( http://josephscott.org/archives/2009/08/detecting-client-side-time-zone-offset-via-javascript/ ) - 不保证正确

  • 将时区保存为用户属性后,您可以像这样向用户显示您的时间:
    Model.created_at.in_time_zone(@current_user.time_zone)

    关于ruby-on-rails - Rails 似乎在错误的时区为 created_at、updated_at 值创建对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16205844/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com