と:timezone
属性を持つデータベースにfoo
というレコードがあります。Ruby/Rails - 値を変更せずに時間のタイムゾーンを変更してください
:start_time
は、たとえば、UTC-2001-01-01 14:20:00
の時刻です。 :timezone
は、たとえば、文字列 - America/New_York
です。
:start_time
の値で、タイムゾーンが:timezone
で指定された新しいTimeオブジェクトを作成したいとします。 :start_time
をロードしてから:timezone
に変換することは望ましくありません。なぜなら、Railsは賢明になり、そのタイムゾーンと一貫するようにUTCから時刻を更新するからです。
現在、
t = foo.start_time
=> 2000-01-01 14:20:00 UTC
t.zone
=> "UTC"
t.in_time_zone("America/New_York")
=> Sat, 01 Jan 2000 09:20:00 EST -05:00
は代わりに、私は
=> Sat, 01 Jan 2000 14:20:00 EST -05:00
すなわちを見てみたいです。私がやりたい:あなたはこれをUTCに、このローカルタイム(ゾーンを使用)に変換言う
ActiveSupport::TimeZone.new('America/New_York').local_to_utc(t)
の線に沿って何かをしたいよう
t
=> 2000-01-01 14:20:00 UTC
t.zone = "America/New_York"
=> "America/New_York"
t
=> 2000-01-01 14:20:00 EST
次のとおりです。http://api.rubyonrails。 org/classes/Time.html#method-c-use_zone – MrYoshiji
タイムゾーンを正しく使用しているとは思いません。 ローカルからUTCとしてdbに保存すると、現地時間で解析し、相対utcで保存すると何が問題になりますか? – Trip
ええと...私はあなたがこれをする必要がある理由を説明する必要があるかもしれない*あなたが助けを受けるのを助けてくれると思う?最初に間違った時間をデータベースに保存するのはなぜですか? – nzifnab