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