Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails窗体在本地时区显示日期时间_Ruby On Rails_Ruby On Rails 3_Datetime_Timezone - Fatal编程技术网

Ruby on rails Rails窗体在本地时区显示日期时间

Ruby on rails Rails窗体在本地时区显示日期时间,ruby-on-rails,ruby-on-rails-3,datetime,timezone,Ruby On Rails,Ruby On Rails 3,Datetime,Timezone,我是rails新手,刚刚完成rails教程,正在构建我的第一个solo应用程序。用户可以在特定时间创建“事件”。目前,用户表单使用UTC格式。我如何将其设置为当地时间 我不想在他们提交后更改它,因为这会让用户感到困惑。打开新表单时,默认时间为当前UTC时间。我希望那是他们当地时区的时间 <%= f.label :Date_Time %><br /> <%= f.datetime_select :date %> 谢谢,有很多方法可以做到这一点

我是rails新手,刚刚完成rails教程,正在构建我的第一个solo应用程序。用户可以在特定时间创建“事件”。目前,用户表单使用UTC格式。我如何将其设置为当地时间

我不想在他们提交后更改它,因为这会让用户感到困惑。打开新表单时,默认时间为当前UTC时间。我希望那是他们当地时区的时间

    <%= f.label :Date_Time %><br />
    <%= f.datetime_select :date %>

谢谢,有很多方法可以做到这一点

我建议你先看看

服务器端

如果您希望保持时间一致,您可能希望使用Rails内置时区选项:

#config/application.rb
config.time_zone = 'Eastern Time (US & Canada)'
你可以在这里看到更多

客户端

在客户端,您必须考虑您想要实现的目标。如果您已经设置了时区,您可能会受益于创建时区存储库ENV variables或datatable,并允许用户从中进行选择,如下所示:

#app/views/form.html.erb
<%= form_tag %>
    <%= select_tag :date, options_from_collection_for_select(@timezones, "id", "name") %>
<% end %>
或者,您可以通过javascript传递时区:

用户体验

底线是你需要考虑你想要达到的目标。如果你的用户需要本地化的时间,你应该使用国家选择系统,他们会给你他们的国家,你可以指定一个时区

从经验上讲,最好使用UTC平均存储所有时间,然后使用用户规范处理这些时间

Simone在这里回答得很好-。他的Javascript方法就是我会使用的方法