首页 > 解决方案 > 如何使 datetime.date 更具动态性而不是手动输入年份?

问题描述

我想通过使用“下次是 8 月 1 日”之类的日期来使我的代码更加动态。

if form.cleaned_data['occurrence'] == 'weekly':
    start_date = tutor_session_form.cleaned_data['date']
    while start_date < date(2020, 8, 1):
        MyModel.objects.create(name=form.cleaned_data['name'], date=start_date,)
        start_date += timedelta(days=7)
else:
    form.save()

所以这适用于我想要它做的事情,但我不想手动更改每年日期中的年份,我希望它自动使用“下次是 8 月 1 日”的内容。

我可以使用“当前年份 + 1”,但如果在 2020 年 2 月使用它,那么它将在 2021 年 8 月 1 日成为条件,那时我仍然希望它是 2020 年。对此的任何帮助将不胜感激!

标签: pythondjangodatedatetime

解决方案


您可以使用函数来查找下一个 8 月 1 日(相对于代码运行的时间):

import datetime


def get_next_august():
    today = datetime.datetime.today()
    year = today.year
    month = today.month
    if month >= 8:
        year += 1

    return datetime.datetime(year, 8, 1)

然后,您可以将代码中的硬编码日期替换为get_next_august()


推荐阅读