在Rails中将EST转换为UTC?

时间:2012-06-01 02:00:56

标签: ruby-on-rails

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

因此,如果用户“选择”一段时间,他们就会选择一个EST时间,而我正在试图找出进行EST到UTC转换的最佳方法。看起来“in_time_zone”onlly有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

1 个答案:

答案 0 :(得分: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