在两个给定时间之间显示15分钟的步骤



我有一个约会表,节省了2次。开始和结束。我想以15分钟的步骤显示所有约会。例如,给定上午10点/11点,现在在我看来显示10.15,10.30,10.45 !谢谢你的建议!

-@appointment.each do |form|  
  =form.date  
  =form.start_time  
  =form.end_time

我有一行代码,但这是您真正想要的吗?希望这两个日期之间的差值不会太大,下面的代码不是很有效。

(Time.now.to_i..1.hour.from_now.to_i).to_a.in_groups_of(15.minutes).collect(&:first).collect { |t| Time.at(t) }  

更好的解决方案:

# Your variables
time_start = Time.now
time_end = time_start + 1.hour
[time_start].tap { |array| array << array.last + 15.minutes while array.last < time_end }

我将to添加到Ruby的Time实例方法中:

class Time
  def to(to, step = 15.minutes)
    [self].tap { |array| array << array.last + step while array.last < to }
  end
end

所以你最终会得到这样的代码:

time_start.to(time_end)

这三个解将以包含步骤的Time对象的数组结束。

 => [2011-07-22 17:11:11 +0200, 2011-07-22 17:26:11 +0200, 2011-07-22 17:41:11 +0200, 2011-07-22 17:56:11 +0200, 2011-07-22 18:11:11 +0200] 

您只需将option :minute_step => 15传递到输入字段

相关内容

  • 没有找到相关文章

最新更新