判断指定日期是否在指定范围内

''' 给定一个时间,判断一个时间是否在指定的范围内 给定时间 如果显示昨天,那么就转换成日期,进行比较; 如果显示今天,那么也转成日期进行比较; 如果只有时间比如10:26,那么就证明是当天; 如果显示星期二,那么就计算历史距离今天最近的星期二的日期,然后再去比较 计算的结果时间, 2023年7月2日--2023年7月10日, 如果给定日期是7.2日或7.10日,时间是包含在范围内的 包含 开始时间 和结束时间 ''' from datetime import datetime, timedelta def get_nearest_weekday(weekday): ''' 历史最近的星期日期 计算 :param weekday: 星期日期 :return: 年月日 ''' today = datetime.now().date() days_behind = (today.weekday() - weekday) % 7 nearest_weekday = today - timedelta(days=days_behind) return nearest_weekday def compare_dates(start_date, end_date, given_time): ''' 给定日期如果是今天,那么就计算今天的日期 给定日期如果是做题,那么就计算你昨天的日期 给定日期如果只有时间,比如10:10 就证明是今天,就按今天的日期计算 给定日期如果是星期二,那么计算一个周几,然后在周几之前计算距离这个时间 ''' today = datetime.now().date() given_datetime = None if given_time == '昨天': given_datetime = today - timedelta(days=1) elif given_time == '今天': given_datetime = today elif ':' in given_time: given_datetime = today else: weekday_mapping = { '星期一': 0, '星期二': 1, '星期三': 2, '星期四': 3, '星期五': 4, '星期六': 5, '星期日': 6 } weekday = weekday_mapping.get(given_time) if weekday is not None: given_datetime = get_nearest_weekday(weekday) print('given_datetime',given_datetime) if given_datetime is not None: if start_date <= given_datetime <= end_date: return "给定时间在范围内" else: return "给定时间不在范围内" else: return "无法识别给定时间" start_date = datetime.strptime('2023年7月12日', "%Y年%m月%d日") end_date = datetime.strptime('2023年7月19日', "%Y年%m月%d日") given_time = '昨天' result = compare_dates(start_date.date(), end_date.date(), given_time) print(result)

  目录