我有一个名为DeliverySlot
的模型。它的属性如下:
#<DeliverySlot:0x007f955a322cf0> {
:id => 2562,
:from => Sat, 31 Dec 2016 12:00:00 UTC +00:00
}
from
是datetime
列。交货时间相隔1小时30分钟。
如何从星期一到星期五下午2点(14点)到下午5点(17点)之间获得所有送货时段? 截至目前,我有:
假设Time.now.utc.strftime('%A')
为Monday
。
DeliverySlot.where(from: (Time.now.utc..(Time.now.utc + 5.days).end_of_day))
我正在使用Postgres btw。我应该使用Postgres日期功能吗?如果是的话,哪些?
答案 0 :(得分:1)
我知道我有点迟了,你现在可能已经知道了。
我创建了一个名为slots的方法,它有2个参数,它们是日期。
...
# Model.slot(Date.today, Date.today+7.days)
def self.slot(start_date, end_date)
start_date.upto(end_date) do |date|
if ['Monday','Tuesday','Wednesday','Thursday','Friday'].include?(date.strftime('%A'))
(date.beginning_of_day.to_i .. date.end_of_day.to_i).step(30.minutes).each do |time|
if Time.at( time ).strftime('%R') > '13:00' && Time.at( time ).strftime('%R') < '17:00'
puts "Create Slot Date: #{date.strftime('%D')} Time: #{Time.at( time )}"
end
end
end
end
end
我希望这有助于