gpt4 book ai didi

ruby-on-rails - 当列的日期时间类型以 UTC 保存在数据库中时,如何在表单上显示本地时间

转载 作者:行者123 更新时间:2023-12-04 07:30:05 28 4
gpt4 key购买 nike

我有一个名为 test_date 的列,在 General Exam 表中键入 datetime。我构建了一个表单来创建和更新 GeneralExam,在表单上,​​我允许用户选择日期和时间 jQuery UI Datepicker .

用户选择日期和时间后,它会显示在文本字段中,如:

25-11-2012 16:30

这是我现在的时间。当我在控制台中运行时,我看到 test_date 保存在数据库中是:

2012-11-25 09:30:00

当我获取对象 GeneralExam 并获取 test_date 值时,它是:

g = GeneralExam.last
g.test_date
=> Sun, 25 Nov 2012 16:30:00 ICT +07:00

我认为test_date是转换的,因为我在application.rb中设置的是:

config.time_zone = 'Hanoi'

但是当我在表格上更新一般考试时,它仍然显示保存在数据库中的时间,而不是我本地的时区,这意味着它显示:

2012-11-25 09:30:00

但我希望它就像我在表格上选择的那样:

25-11-2012 16:30:00

如何设置以本地时间显示日期时间列?

而且我认为日期的顺序颠倒了,当我选择日期时,它是25-11-2012,但是当它显示时是2012-11-25, 为什么顺序颠倒了?

最佳答案

几个小时后,我在 google 和 stackoverflow 上搜索,我想我找到了我想要的东西。我看过this question并查找有关 strftime 的一些信息方法。这是我解决问题所需的信息。

首先,如何显示日期时间在显示时以UTC格式保存为本地时间:

Value was saved:                             2012-11-25 09:30:00

Value I want display on form (ICT +7:00): 25-11-2012 16:30:00

为了显示我想要的值,我在表单上使用了这个(我使用了 simple_form):

<%= f.input :test_date, as: :string, label: false, input_html: { id: "datetime_picker", value: f.object.test_date.strftime("%d-%m-%Y, %H:%M") } %> 

我在数据库中获取了值并通过以下方式对其进行格式化:

value: f.object.test_date.strftime("%d-%m-%Y, %H:%M") } %> 

当我想在表格数据中显示test_date时,我还使用了strftime("%d-%m-%Y, %H:%M")来根据需要显示日期时间格式。

关于ruby-on-rails - 当列的日期时间类型以 UTC 保存在数据库中时,如何在表单上显示本地时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13549888/

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