我想要一个包含时区字段的特定时间。这可能吗?
目前我正在使用它来检索时间:
<%= f.time_select :meeting_time %>
<%= f.time_zone_select :timezone %>
这是为了尝试更改时区:
meeting_time.in_time_zone(params[:meeting][:timezone])
但是当用户输入时间时,它将自动设置为rails服务器上的时区(在本例中为GMT)。然后,如果用户选择例如GMT-1,它将把时间减少一个小时,但我想要的是增加它所以所有时间都以GMT显示。
示例:
用户输入18:00 GMT-1,f.time_select将其设置为18:00 UTC。接下来,我尝试将其转换为GMT-1,但由于它已经在UTC中,它将给我17:00 GMT-1而不是19:00 GMT,我想要。
注意:我不一定要在GMT中显示所有时间,但我不认为我可以在不更改服务器时区的情况下以其他格式保存
答案 0 :(得分:3)
我不确定这是否是正确的rails惯例,但这是一个似乎对我来说工作正常的解决方法。
如果在将本地时间保存到数据库之前将其更改为utc,则无论服务器时区如何,都应将其保存为正确的utc时间。
为当前请求设置Time.zone
Time.zone = params[:meeting][:timezone]
调整为utc
meeting_time = Time.zone.local_to_utc meeting_time