【问题标题】:Input time + timezone with Rails使用 Rails 输入时间 + 时区
【发布时间】:2011-12-04 19:35:40
【问题描述】:

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

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

<%= 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 中显示所有时间,但我认为我不能在不更改服务器时区的情况下以其他格式保存

【问题讨论】:

标签: ruby-on-rails timezone


【解决方案1】:

我不确定这是否是正确的 rails 约定,但它是一种对我来说似乎工作正常的解决方法。

如果您在将本地时间保存到数据库之前将其更改为 utc,则无论服务器时区如何,它都应保存为正确的 utc 时间。

为当前请求设置 Time.zone

    Time.zone = params[:meeting][:timezone]

调整为UTC

    meeting_time = Time.zone.local_to_utc meeting_time

【讨论】:

    猜你喜欢
    • 2017-07-06
    • 2021-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-01
    • 2011-03-21
    • 2012-03-03
    相关资源
    最近更新 更多