タイムゾーンに関連してRailsで時間を追加することについて知っておくべきいくつかの良いことを指摘することで、この質問に答えます。
時間を追加すると、タイムゾーンが変更されても同じ時間を維持するために、UTC で時間が割り当てられます。
t = Time.now
-> 2012-08-10 13:17:01 +0200
t + 90.days
-> 2012-11-08 13:17:01 +0100
DateTime はこれを行いません。DateTime は、開始した同じ TimeZone で 1 時間上昇または 1 時間下降します。
dt = DateTime.now
=> Fri, 10 Aug 2012 13:16:54 +0200
dt + 90.days
=> Thu, 08 Nov 2012 13:16:54 +0200
ただし、DateTime は、2 つの DateTime を減算することによって実行できる 2 つの日付間の日数を取得する唯一の方法です。これは、時間ではできません。時間を減算すると、完全な 24 時間で割ることができず、タイムゾーンの切り替えのために無理数が得られるためです。
これは私の問題に固有のものです。しかし、私は Time を DateTime に変換して距離の日数を見つけてから、時間に再変換して TimeZone の変更に関連する UTC で後の時間を見つけることで問題を解決しました。
original_job.to_time + ( new_date.to_datetime - original_job.to_datetime ).to_i.days