Fre*_*rin 2 timezone datetime ruby-on-rails utc
我根据请求使用TimeZone在Ruby on Rails 4中开发应用程序.
我想在我的应用程序中使用日期时间选择器(http://xdsoft.net/jqplugins/datetimepicker/)来替换默认的Simple_form日期时间输入(5个组合框...).
对于这种日期时间选择器(我搜索其他人,它是相同的),在我看来,我必须使用"字符串"字段,如下所示:
<%= f.input :done_at, as: :string, input_html: { :data => { :behaviour => "datetimepicker" } } %>
Run Code Online (Sandbox Code Playgroud)
当我发布表单时,Rails负责处理时区并在数据库中存储UTC时间.
例如,我在该字段中输入"2014-03-14 19:45:07"(当地时间是巴黎,所以UTC +0100),我在数据库中有"2014-03-14 18:45:07" ,UTC.这是正确的.
但是当我想编辑信息时,Rails会在错误的时间内填写该字段.偏移时区丢失,我在字段中显示"2014-03-14 18:45:07"(UTC时间),因此在正确时间前1小时.
如何才能有正确的时间来处理用户时区?(不是UTC)
我尝试在http://jessehouse.com/blog/2013/11/15/working-with-timezones-and-ruby-on-rails/上找到的解决方案来覆盖日期的显示,但它不起作用.
def done_at
super.in_time_zone(time_zone) if super && time_zone
end
Run Code Online (Sandbox Code Playgroud)
如果在我看来,我把@ action.done_at,时间是正确的但不在现场.
谢谢,
弗雷德
显式设置输入的值.@object.done_at.in_time_zone(time_zone)如果需要,您可以转移到帮助者
<%= f.input :done_at, as: :string, input_html: { :data => { :behaviour => "datetimepicker" }, :value => @object.done_at.in_time_zone(time_zone).strftime('%d-%m-%Y %H:%M') } %>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1535 次 |
| 最近记录: |