Tha*_*anh 3 ruby-on-rails ruby-on-rails-3
我有一个名为的列test_date,输入datetimeGeneral Exam表.我在表单上构建了一个表单来创建和更新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
Run Code Online (Sandbox Code Playgroud)
我认为test_date是转换,因为我设置的application.rb是:
config.time_zone = 'Hanoi'
Run Code Online (Sandbox Code Playgroud)
但是当我在表单上更新常规考试时,它仍然显示时间保存在数据库中,而不是我的本地时区,这意味着它显示:
2012-11-25 09:30:00
但我希望它就像我在表单上选择的那样:
25-11-2012 16:30:00
如何在本地时间设置显示日期时间列?
而且我认为日期的顺序是相反的,当我选择日期时,它是25-11-2012,但是当它显示它时2012-11-25,为什么它颠倒了顺序?
几个小时后我搜索谷歌和stackoverflow,我想我找到了我想要的东西.我查看了这个问题并找到了一些有关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
Run Code Online (Sandbox Code Playgroud)
要显示我想要的值,我在表单上使用了这个(我使用了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") } %>
Run Code Online (Sandbox Code Playgroud)
我在数据库中有价值并通过以下方式格式化:
value: f.object.test_date.strftime("%d-%m-%Y, %H:%M") } %>
Run Code Online (Sandbox Code Playgroud)
当我想要test_date在表数据中显示时,我也习惯于strftime("%d-%m-%Y, %H:%M")显示日期时间格式.
| 归档时间: |
|
| 查看次数: |
2663 次 |
| 最近记录: |