我目前正在嘗試檢查兩個日期時間範圍是否重疊。我有兩個問題Rails Overalps日期時間
首先,重疊總是返回false,即使我一遍又一遍地提交相同的開始時間,持續時間爲1小時(即開始時間是3PM,結束時間是4PM,並且重複提交通常會創建一個新的會話,但不會通過重疊返回true語句,並返回一個JSON,表示培訓師已被預訂)。所以if語句永遠不會被打中。 秒,軌道重疊在其方法中使用> =,我無法覆蓋它以包含>(終點不返回true,即3-4PM和4-5PM不應重疊)。
如何檢查兩個日期時間並返回true而不包含端點?我是從JSON格式錯誤的日期?我的if語句錯了嗎?它們作爲帶時區(時間戳)的日期時間存儲在postgresql中。
def create_request_iphone
@start_time = DateTime.parse(params[:start_time])
@end_time = @start_time + params[:duration].to_f.hour
#logic to check if trainer is booked at that time
@trainer = Trainer.where(id: params[:trainers_id]).first
@booked_session = @trainer.session_details
//logic to check if trainer has booked sessions that overlap
@booked_session = @trainer.session_details
@booked_session.each do |aSession|
if (aSession.start_time..aSession.end_time).overlaps?(@[email protected]_time)
respond_to do |format|
msg = {:status => "FAILURE", :message => "TRAINER ALREADY BOOKED"}
format.json { render :json => msg }
end
return
end
end
@session_detail = SessionDetail.new(trainers_id: @trainer.id)
unless([email protected]_detail.save)
respond_to do |format|
msg = {:status => "SUCCESS", :message => @session_detail.as_json)
format.json { render :json => msg } # don't do msg.to_json
end
end
end
結束了使用以下 'DEF重疊(X,Y) ?(x.first - y.end)*(y.first - x.end)> 0 ' 末端 – DaynaJuliana