gpt4 book ai didi

mysql - 编辑表单中的 Rails 日期时间字段显示 UTC

转载 作者:行者123 更新时间:2023-11-29 12:45:16 25 4
gpt4 key购买 nike

我有一个日期时间字段,该值存储在 mysql 中,如下所示:

2014-08-26 16:00:00

当用户选择日期时间时,他们从 jquery 日期时间弹出窗口中选择它。并将其插入文本字段并发送到服务器,此时它的解析如下:

def date_start=(s)
datetime = parse_datetime s
write_attribute :date_start, datetime
end

def parse_datetime(s)
DateTime.strptime(s,'%m/%d/%Y %I:%M %p')
end

然后插入数据库。现在,当用户编辑表单时,日期时间显示在文本字段中,但显示如下:

2014-08-26 16:00:00 UTC

为什么那里显示 UTC(记录是在本地时间检索和存储的),我怎样才能摆脱它?

最佳答案

将时间戳存储在数据库中作为 UTC 时间被认为是一种很好的做法,无论它们最初位于哪个时区(这样就可以准确地比较它们并防止在事情不一致时通常出现的困惑)。

Active Record 通过自动进行转换来解决这个问题。这意味着当用户选择日期时间时,您必须确保输入时在 Rails/Ruby 中给出正确的时区,使用 Time.use_zone()或类似的东西。从数据库检索后显示它时也是如此。您需要某种方法来检索用户的本地时区(Javascript 或手动选择的配置文件选项)。

顺便说一句,如果您想将应用程序的默认时区设置为 UTC 以外的时区,则可以更改 application.rb 中的 config.time_zone 选项>。请注意,数据库仍将以 UTC 格式存储内容,它只允许您为日期时间输入和输出设置合理的默认时区(即 Active Record 转换的默认时区)。不过,它对单个用户的日期时间没有帮助,除非您的所有用户都位于同一时区。

关于mysql - 编辑表单中的 Rails 日期时间字段显示 UTC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25538023/

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