【发布时间】:2014-11-05 10:52:43
【问题描述】:
看看这段代码:
[4, 5, 6, 7].each do |x|
start_at = Time.zone.parse("2014.10.2#{x} 08:00")
puts "#{start_at.inspect} / #{start_at.seconds_since_midnight/60}"
end
输出:
Fri, 24 Oct 2014 08:00:00 CEST +02:00 / 480.0
Sat, 25 Oct 2014 08:00:00 CEST +02:00 / 480.0
Sun, 26 Oct 2014 08:00:00 CET +01:00 / 480.0
Mon, 27 Oct 2014 08:00:00 CET +01:00 / 480.0
我们在德国,10 月 26 日 DST 被重置,因此 08:00 实际上不是午夜后的 8*60 分钟,而是 9*60。
恕我直言,seconds_since_midnight 方法应该尊重这一点。我错过了什么还是这实际上是一个 Ruby 错误?
在 Mac OS X 10.9.5 (MacPorts) 上使用 Ruby 1.9.3、Rails 3.0.20。
(是的,Rails 3.0.20 很旧。遗留项目。如果它在 Rails 4 中得到修复,那就更好了。)
【问题讨论】:
-
Matt 已经告诉了你原因,但很容易得到正确答案 - start_at - start_at.midnight
标签: ruby-on-rails ruby time timezone