0

すべてが UTC として保存されているツールがあり、GUI 側は EST のみを反映します (具体的には、UTC に静的な東部時間の EST - 5.hours で、夏時間には従いません。

したがって、ユーザーが時刻を「選択」する場合、EST 時刻を選択していることになり、私は EST から UTC への変換を行う最善の方法を見つけようとしています。「in_time_zone」には東部ゾーンが 1 つしかないように見えます。「Easter Time (US & Canada)」は実際には 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 として保存するのが最善でしょうか?

ありがとう!

レール 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 に答える