如何:迭代表行,每行标记一次。第一行是开始时间,最后一行是结束时间,迭代应该以15分钟的间隔创建它们之间的每一行。
start_time:'06:00',end_time:'07:00'
06:00
6时15分
06:30
06:45
07:00
start_time = Time.local(2013, 5, 25, 06, 00)
end_time = Time.local(2013, 5, 25, 20, 00)
begin
start_time += 15.minutes
puts start_time
end while start_time < end_time
这会返回nil ...但是,不应该......它应该返回值
答案 0 :(得分:1)
我想出的就是我需要的东西。受到jethroos答案的启发。
def cal_times
start_time = Time.local(2013, 5, 25, 06, 00)
end_time = Time.local(2013, 5, 25, 20, 00)
times = [start_time.strftime('%H:%M')]
begin
start_time += 15.minutes
times << start_time.strftime('%H:%M')
end while start_time < end_time
times
end
答案 1 :(得分:0)
我不确定我是否理解正确的问题,但这里有一个例子,说明如何在15分钟的间隔内生成时间
1.9.3p392 :029 > a = Time.now
=> 2013-05-25 23:39:44 +0200
1.9.3p392 :030 > a = a - a.sec - a.min%15*60
=> 2013-05-25 23:30:00 +0200
1.9.3p392 :031 > b = a + 1.hour
=> 2013-05-26 00:30:00 +0200
1.9.3p392 :032 > begin
1.9.3p392 :033 > a += 15.minutes
1.9.3p392 :034?> puts a
1.9.3p392 :035?> end while a < b
2013-05-25 23:45:00 +0200
2013-05-26 00:00:00 +0200
2013-05-26 00:15:00 +0200
2013-05-26 00:30:00 +0200
也许这有点帮助