Ruby on Rails 3:为什么从Date到seconds的转换因时间而异

时间:2011-07-15 08:32:43

标签: ruby ruby-on-rails-3

在Ruby中,我试图将Date转换为HighCharts JavaScript图表库可用的格式。奇怪的是,当我将Date转换为秒时,转换的时间与将Time转换为秒时的转换方式不同,而将DateTime转换为秒时的转换方式则不同。由于转换的这种差异,图表上显示的日期可能会落后1个日期。

我确信这与Rails有关,以及它如何处理从UTC到Local的转换。如果有人能向我解释细节,我会非常感激。

在我的下面的例子中,我使用相同的日期'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

1 个答案:

答案 0 :(得分: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)