2016-11-28 3 views
0

DeliverySlot이라는 모델이 있습니다.오후 2시에서 5시 사이에 배달 슬롯을 얻는 방법은 무엇입니까?

#<DeliverySlot:0x007f955a322cf0> { 
    :id => 2562, 
    :from => Sat, 31 Dec 2016 12:00:00 UTC +00:00 
} 

fromdatetime 열입니다 : 그것의 속성처럼 보인다. 배달 슬롯은 서로 1 시간 30 분이 소요됩니다.

오후 2시 (14:00)와 오후 5시 (17:00) 사이의 모든 배달 슬롯을 월요일부터 금요일까지 어떻게받을 수 있습니까? 지금 현재 :

이라고 가정하면 Time.now.utc.strftime('%A')Monday입니다.

DeliverySlot.where(from: (Time.now.utc..(Time.now.utc + 5.days).end_of_day)) 

저는 Postgres btw를 사용하고 있습니다. Postgres 날짜 함수를 사용해야합니까? 그렇다면 어느 것입니까?

답변

1

나는 조금 늦다는 것을 알고있다.

나는 슬롯이라는 메서드를 만들었고 두 개의 매개 변수를 취합니다.

... 
    # 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 

나는이

을하는 데 도움이되기를 바랍니다