Ну, месяц не постоянный.Вам также приходится иметь дело с переходом на летнее время и т. Д. Таким образом, чтобы выполнить итерацию более месяца (или любого промежутка времени) по часам быстрее и точнее:
bm = Benchmark.measure do
s_time = Time.local(2011,1,1)
e_time = Time.local(2011,2,1)
while(s_time < e_time)
puts s_time.inspect
s_time += 3600
end
end
puts bm
0.010000 0.000000 0.010000 ( 0.010531)
Если вы хотите, чтобы часы отображались только в верхней части часамежду произвольными временами:
s_time += s_time.to_i % 3600
e_time -= e_time.to_i % 3600