我想獲取從Rails種子到Rails種子的日期範圍。紅寶石/導軌的日期範圍
當我嘗試生成日期範圍((Date.today - 10).. Date.today)發生異常。
異常消息:爲範圍
但在Rails的控制檯一切都好壞值。
我認爲ActiveSupport是合理的(我的調試器告訴我這一點)。
Ralls 3.1.3
發生了什麼事?
我想獲取從Rails種子到Rails種子的日期範圍。紅寶石/導軌的日期範圍
當我嘗試生成日期範圍((Date.today - 10).. Date.today)發生異常。
異常消息:爲範圍
但在Rails的控制檯一切都好壞值。
我認爲ActiveSupport是合理的(我的調試器告訴我這一點)。
Ralls 3.1.3
發生了什麼事?
你可以理解這是怎麼回事由兩個邊分裂,並檢查他們的階級,像這樣:
Date.today.class # => Date
(Date.today - 10).class # => Date
((Date.today - 10)..Date.today).each {|d| puts d.class} # => 10 Date works for me
您遇到的錯誤是這樣的:
('a'..10) # => ArgumentError: bad value for range
你可以發佈你的範圍的2個邊的類嗎?
(Date.today - 10).class => ?
Date.today.class => ?
你是否覆蓋了你的rails環境中的任何類?它在irb
中工作嗎?
PS:當你在軌道是可以使用10.days.ago
但你需要使用to_date
因爲它是一個ActiveSupport::TimeWithZone
邊緣的類別是Date,真的。 – 2012-04-16 09:42:04
我相信你,但無論如何''((Date.today - 10).to_date..Date.today.to_date)' – ecoologic 2012-04-16 09:44:48
生態,謝謝!只是我的變量名稱錯誤。 – 2012-04-16 10:35:21
begin
((Date.today - 10)..Date.today).each { |date| puts date }
rescue
$! # => #<NameError: uninitialized constant Date>
end
require 'date'
((Date.today - 10)..Date.today).each { |date| puts date }
# >> 2012-04-06
# >> 2012-04-07
# >> 2012-04-08
# >> 2012-04-09
# >> 2012-04-10
# >> 2012-04-11
# >> 2012-04-12
# >> 2012-04-13
# >> 2012-04-14
# >> 2012-04-15
# >> 2012-04-16
這可以做到!圍繞日期範圍逐步加入了一些邊緣案例,但如果您使用Rails中的ActiveSupport,則可以優雅地處理這些問題。查看我的答案在http://stackoverflow.com/questions/19093487/ruby-create-range-of-dates/19094504#answer-19094504瞭解更多詳情:D – captainpete 2013-11-01 00:48:41