ruby-on-rails - 使用 Rails 输入时间 + 时区

标签 ruby-on-rails timezone

我想询问包含时区字段的特定时间。这可能吗?

目前我正在使用它来检索时间:

<%= 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/

相关文章:

database - sql server 中的时区注意事项

r - 你如何改变 Sys.time() 的时区

ruby-on-rails - 如何在SearchKick中搜索一列

ruby-on-rails - ruby on rails 命名作用域实现

Rails 中的 Mysql 小数秒

javascript - 是否有库或 Web 服务可以为我的 JavaScript 应用程序提供夏令时数据?

python - Django 时区 : feeling a bit confused

ruby-on-rails - 在 rails activeadmin 中对 table_for 进行排序

ruby-on-rails - 仅包含某些属性

postgresql - 将 UTC 时间戳转换为 timestamptz