我想询问包含时区字段的特定时间。这可能吗?
目前我正在使用它来检索时间:
<%= 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 的所有时间,但我不认为我可以在不更改服务器时区的情况下以其他格式保存
最佳答案
我不确定这是否是正确的 Rails 约定,但这是一种对我来说似乎效果很好的解决方法。
如果在将本地时间保存到数据库之前将其更改为 utc,则无论服务器时区如何,它都应该保存为正确的 utc 时间。
设置当前请求的时区
Time.zone = params[:meeting][:timezone]
调整为UTC
meeting_time = Time.zone.local_to_utc meeting_time
关于ruby-on-rails - 使用 Rails 输入时间 + 时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7718222/