2017-09-15 14 views
0

私はデータベースに多くの時間範囲を持ち、新しい時間範囲を挿入するためのフォームを作成します。python - 時間範囲の重複を判別しますか?

例えば第1の範囲15:00 14:00であり、第二範囲17:00この関数の午後四時00分である場合にも、私は他の時間範囲

と新しい時間範囲の間overlaping確認する関数を書きますTrueを返しません。

2つ目の範囲が15:00から16:00の場合、2つの範囲は重なり合いませんがTrueを返します。

def is_overlap(start_date, end_date, obj): 
""" 
Check overlaping between start_date and end_date 
start_date = Start Meeting DateTime 
end_date = End Meeting DateTime 
obj = Model query objects 
""" 

for q in obj: 
    latest_start = max(start_date, q.start_date) 
    earliest_end = min(end_date, q.end_date) 

    if (earliest_end - latest_start).days == 0: 
     if not (earliest_end - latest_start).seconds == 0: 
      return True 
      break 

    if (earliest_end - latest_start).days >= 0: 
     return True 
     break 
+1

ここに2つの重複する質問があります。https://stackoverflow.com/questions/9044084/efficient-date-range-overlap-calculation-in-pythonとhttps://stackoverflow.com/questions/14885188/checking-for -overlap-between-time-span – Kasramvd

答えて

1
if (earliest_end - latest_start).days >= 0: 
     return True 
     break 

この文はtrueを返しているものです。あなたはそれを取り出すべきです。

関連する問題