Edited at

時刻を10分ごと増加させる iterator を作つた.

More than 3 years have passed since last update.

Ruby で,Date の Range を作ることができる.例へば,


range_of_date.rb

require "active_support/time"

a = Date.today
b = a + 3.days

range = a..b


のやうに.この range に對して each を使ふことができる:


range_of_date.rb

range.each do |day|

puts day
end

結果は以下の通り:

2014-11-16

2014-11-17
2014-11-18
2014-11-19

Date の Range と同樣に, Time の Range も作れる:


range_of_time.rb

require "active_support/time"

c = Time.now
d = Time.now + 2.hours

range = c..d


しかしこの range に對しては each が用意されてゐないので,自分で作つてみた.次のやうに作つた.


each_10_min.rb

require "active_support/time"

class Range
def each_10_min
@i = self.first
until @i > self.last
yield @i
@i += 10.minutes
end
end
end

c = Time.now
d = Time.now + 2.hours

range = c..d
range.each_10_min do |j|
puts j
end


結果は以下のやうになる:

2014-11-16 14:40:27 +0900

2014-11-16 14:50:27 +0900
2014-11-16 15:00:27 +0900
2014-11-16 15:10:27 +0900
2014-11-16 15:20:27 +0900
2014-11-16 15:30:27 +0900
2014-11-16 15:40:27 +0900
2014-11-16 15:50:27 +0900
2014-11-16 16:00:27 +0900
2014-11-16 16:10:27 +0900
2014-11-16 16:20:27 +0900
2014-11-16 16:30:27 +0900
2014-11-16 16:40:27 +0900

なほ,active_support とは,Date, Time の扱ひを容易にしてくれる library である.詳しくは

Rubyで日付の計算するならactive_support使っとけって世間で言われてるけどマジだわ

に書いてある.