首先定义边界,
start_time = DateTime.parse("9 AM").to_i
start_interval = DateTime.parse("11 AM").to_i
end_interval = DateTime.parse("1 PM").to_i
end_time = DateTime.parse("3 PM").to_i
然后使用range
和select
以获得所需的值,
values = (start_time..end_time).step(15.minutes).select{|t| t <= start_interval || t >= end_interval }
然后你就可以在这些值重复,以产生选择的选项,例如,
select_tag :dt, options_for_select(values.map{ |t| [ Time.at(t).utc.to_datetime.strftime("%H:%M %p"), Time.at(t).utc.to_datetime ] })
你可以在控制台上试试这个,
> (start_time..end_time).step(15.minutes).select{|t| t <= start_interval || t >= end_interval }.map{ |t| Time.at(t).utc.to_datetime.strftime("%H:%M %p") }
=> ["09:00 AM", "09:15 AM", "09:30 AM", "09:45 AM", "10:00 AM", "10:15 AM", "10:30 AM", "10:45 AM", "11:00 AM", "13:00 PM", "13:15 PM", "13:30 PM", "13:45 PM", "14:00 PM", "14:15 PM", "14:30 PM", "14:45 PM", "15:00 PM"]
你到底在想什么? – Surya 2014-10-12 08:01:25
我需要像time_select助手一样的东西,但需要一些时间不要在那里列出 – Baran 2014-10-12 11:48:30