2011-07-15 6 views
1

ルビーでは、HighCharts JavaScriptチャーミングライブラリで使用可能な形式に日付を変換しようとしています。奇妙なことは、DateTimeを秒に変換すると、を秒に変換して別の方法で変換する場合とは異なり、変換後の日付を秒に変換する場合とは異なります。この変換の違いにより、グラフに表示される日付は1日遅れる可能性があります。Ruby on Rails 3:日付から秒への変換が時間と秒と異なる理由

これはRailsと関係があり、UTCからローカルへの変換をどのように処理するのかと確信しています。誰かが私に細部を説明することができたら、私はそれを高く評価します。

以下の私の例では、同じ日付 '2011/05/02'を使用していますが、秒が異なるようになっています。

例:

Date.new(2011, 5, 2).to_time.to_i * 1000 
=> 1304265600000 
=> 05/01/2011 

Time.utc(2011, 5, 2).to_i * 1000 
=> 1304294400000 
=> 05/02/2011 

Date.new(2011, 5, 2).to_datetime.to_i * 1000 
=> 1304294400000 
=> 05/02/2011 

答えて

2
ruby-1.9.2-p180 :106 > Time.utc(2011, 5, 2) 
=> 2011-05-02 00:00:00 UTC 
ruby-1.9.2-p180 :107 > Date.new(2011, 5, 2).to_time 
=> 2011-05-02 00:00:00 +0300 

Date.to_timeは、タイムゾーンで時間を生成します。それがあなたの違いです。私の心の中に即座にポップ クイックフィックス/ハックは以下のとおりです。

Date.new(2011, 5, 2).to_time.utc.midnight 

編集: http://apidock.com/rails/Date/to_time

Date.new(2011, 5, 2).to_time(:utc) 
関連する問題