在Rails中将EST转换为UTC?

Converting EST to UTC in Rails?

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

因此,如果用户"选择"一段时间,他们就会选择一个EST时间,而我正在试图找出进行EST到UTC转换的最佳方法。 看起来"in_time_zone"onlly有1个东区,我假设"复活节时间(美国和加拿大)"真的是EDT(不是EST):

1
2
3
4
    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


在config / application.rb中

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

存储时,使用此:

1
2
3
4
5
6
7
8
9
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