Получить текущую дату, если день является днем ​​недели, иначе получить дату самого последнего дня недели (т.е. пятница) - PullRequest
0 голосов
/ 12 июня 2019

Кто-нибудь может придумать для этого элегантный лайнер?

Моя попытка:

dt.datetime.today() if dt.datetime.today().isoweekday() in range(1, 6) else 'date of last friday?'

1 Ответ

1 голос
/ 12 июня 2019

Я бы предпочел две строки, хотя 1 возможна.Причина в том, что если вы дважды вызываете dt.datetime.today (), есть (очень маленький) шанс, что вы получите два разных ответа, если он будет выполнен за доли секунды до полуночи.Также, вероятно, более эффективно сохранить значение, чем дважды вызывать функцию.

import datetime as dt

thisday = dt.datetime.today().date()
thisday -= dt.timedelta(days=max(0,thisday.weekday()-4,0))

В субботу в неделю dayday () возвращает 5, в воскресенье возвращает 6, поэтому мы вычитаем 1 или 2 дня соответственно.В другие дни weekday () - 4 равен нулю или меньше, поэтому функция max возвращает ноль и ничего не вычитается.

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