【问题标题】:Converting EST to UTC in Rails?在 Rails 中将 EST 转换为 UTC?
【发布时间】:2012-06-06 07:06:15
【问题描述】:

我有一个工具,其中所有内容都保存为 UTC,而 GUI 端仅反映 EST(特别是东部时间的 EST,它对 UTC 是静态的 - 5.hours,并且不遵循夏令时。

因此,如果用户“选择”一个时间,他们就是在选择一个 EST 时间,我正在尝试找出将 EST 转换为 UTC 的最佳方法。看起来“in_time_zone”只有 1 个东部区域,我假设“复活节时间(美国和加拿大)”实际上是 EDT(不是 EST):

    ActiveSupport::TimeZone.us_zones.map(&:name) 
    => ["Hawaii", "Alaska", "Pacific Time (US & Canada)", "Arizona", 
"Mountain Time (US & Canada)", "Central Time (US & Canada)",
 "Eastern Time (US & Canada)", "Indiana (East)"]

最好将用户选择的 EST 时间添加 5 小时 (+ 5.hours) 以存储为 UTC 吗?

谢谢!

Rails 2.3.5

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    在 config/application.rb 中

    config.time_zone = 'Eastern Time (US & Canada)'
    

    存储时,使用这个:

    in_time = (params[:in] + ' Eastern Time (US & Canada)'
              ).to_datetime.in_time_zone('Eastern Time (US & Canada)').to_s
    if in_time.match('-0400')
      clock.in = (params[:in] + ' -4:00').to_datetime.in_time_zone('UTC') if params[:in] != ''
    elsif in_time.match('-0500')
      clock.in = (params[:in] + ' -5:00').to_datetime.in_time_zone('UTC') if params[:in] != ''
    else
      <HANDLE ERROR> "ERROR: CANNOT FIGURE OUT TIMEZONE IN #{params[:in]}."
    end
    

    【讨论】:

    • 有帮助吗?如果您找到了更好的解决方案,请在此处分享。你能接受答案吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-15
    • 1970-01-01
    • 2014-09-22
    • 1970-01-01
    • 1970-01-01
    • 2016-04-11
    • 2023-04-07
    相关资源
    最近更新 更多