以下是一个示例代码,用于根据课程表生成有效日期列表:
from datetime import datetime, timedelta
def generate_valid_dates(course_schedule):
valid_dates = []
current_date = datetime.now().date()
for course in course_schedule:
start_date = course['start_date']
end_date = course['end_date']
if start_date <= current_date <= end_date:
valid_dates.append(current_date)
while start_date <= end_date:
current_date += timedelta(days=1)
if current_date.weekday() in course['valid_days']:
valid_dates.append(current_date)
return valid_dates
# 示例课程表
course_schedule = [
{
'start_date': datetime(2022, 1, 1).date(),
'end_date': datetime(2022, 1, 31).date(),
'valid_days': [0, 2, 4] # 表示周一、周三、周五有效
},
{
'start_date': datetime(2022, 2, 1).date(),
'end_date': datetime(2022, 2, 28).date(),
'valid_days': [1, 3] # 表示周二、周四有效
}
]
valid_dates = generate_valid_dates(course_schedule)
print(valid_dates)
以上代码中,generate_valid_dates
函数接受一个课程表作为参数,然后根据当前日期和课程表的信息生成有效日期列表。课程表是一个包含课程信息的字典列表,每个课程字典包含开始日期、结束日期和有效日期(以星期几表示)。
函数首先获取当前日期,然后遍历课程表中的每个课程。对于每个课程,从开始日期到结束日期之间的每一天,如果该天是有效的(即在课程的有效日期列表中),就将其添加到有效日期列表中。
最后,函数返回生成的有效日期列表。在示例代码中,我们使用了一个示例课程表进行测试,并输出生成的有效日期列表。