0

我有一个工具,其中所有内容都保存为 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)"]

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

谢谢!

导轨 2.3.5

4

1 回答 1

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
于 2012-06-01T02:19:58.390 回答