'''
给定一个时间,判断一个时间是否在指定的范围内
给定时间 如果显示昨天,那么就转换成日期,进行比较;
如果显示今天,那么也转成日期进行比较;
如果只有时间比如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)
上一篇
sqlist3数据库读写
sqlist3数据库读写
2020-02-18
下一篇
pyppeteer下载chromium报错或速度慢
pyppeteer下载chromium报错或速度慢
2020-02-18