from datetime import datetime
# 日付リスト
date_list = [
{'start_date': '2024/04/01', 'end_date': '2024/04/30'},
{'start_date': '2024/05/01', 'end_date': '2024/05/31'},
{'start_date': '2024/06/01', 'end_date': '2024/06/30'},
{'start_date': '2024/07/01', 'end_date': '2024/07/31'},
{'start_date': '2024/07/01', 'end_date': '2024/07/31'},
]
# 文字列を日付に変換
def parse_date(date_str):
return datetime.strptime(date_str, '%Y/%m/%d')
# 日付リストの期間チェック
def check_date_range(date_list):
# 開始日でソート
sort_list = sorted(date_list, key=lambda item: parse_date(item['start_date']))
for i in range(len(sort_list) - 1):
end_date = parse_date(sort_list[i]['end_date'])
next_start_date = parse_date(sort_list[i + 1]['start_date'])
# 重複期間(次の開始日が終了日よりも早い)
if next_start_date <= end_date:
return '重複期間あり'
# 空白期間(終了日の翌日が次の開始日でない)
if (next_start_date - end_date).days > 1:
return '空白期間あり'
# 結果を確認
result = check_date_range(date_list)
print(result) # 重複期間あり