Как сделать datetime.date более динамичным, чем вводить год вручную? - PullRequest
0 голосов
/ 18 октября 2019

Я бы хотел сделать свой код более динамичным, указав для даты что-то вроде «в следующий раз, когда 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()

Так что это работает для того, что я хочу, но я бы не хотел вручную менять год в дате каждый год, я бы предпочел, чтобы он автоматически использовал что-то, что говорит«в следующий раз наступит 1 августа».

Я мог бы использовать «текущий год + 1», но если бы он использовался в феврале 2020 года, то это было бы условием 1 августа 2021 года, когда я все еще хотел бы, чтобы оно было2020. Любая помощь с этим будет принята с благодарностью!

1 Ответ

0 голосов
/ 18 октября 2019

Вы можете использовать функцию для поиска следующего 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()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...