Django中如何查询两个指定日期范围内的所有日期?
Python 实现获取两个日期间所有日期的方案
你的现有代码已经拿到了起始日期unique_dates[0]和结束日期datetime.date.today(),只需通过日期间隔累加即可生成完整的日期列表。
完整实现代码
import datetime # 你的原有业务代码 unique_dates = list({a.date for a in attendances}) current_date = datetime.date.today() start_date = unique_dates[0] # 生成包含首尾日期的完整日期列表 date_range = [] temp_date = start_date while temp_date <= current_date: date_range.append(temp_date) # 每次向后推移1天 temp_date += datetime.timedelta(days=1)
可选优化写法
可以用列表推导式简化为一行代码:
date_range = [start_date + datetime.timedelta(days=i) for i in range((current_date - start_date).days + 1)]
注:末尾加1是为了把结束日期current_date也包含进结果列表
常见场景适配
如果你需要输出字符串格式的日期(比如2021-08-30格式),只需修改存入列表的逻辑即可:
# 生成字符串格式的日期列表 date_range = [] temp_date = start_date while temp_date <= current_date: date_range.append(temp_date.strftime("%Y-%m-%d")) temp_date += datetime.timedelta(days=1)
如果unique_dates[0]是字符串类型而非datetime.date类型,需要先做类型转换:
start_date = datetime.datetime.strptime(unique_dates[0], "%Y-%m-%d").date()
内容的提问来源于stack exchange,提问作者Path Parakh
相关产品推荐
相关产品推荐

