python3: перейти к самому последнему событию данного времени - PullRequest
0 голосов
/ 12 сентября 2018

Я пытаюсь изменить объект datetime, чтобы он был самым последним в данный момент времени.Так, например, если объект datetime равен datetime(2018,9,12,15,0,0) и я хочу перейти к time(12,0), результат должен быть datetime(2018,9,12,12,0,0).Но если я хочу перейти к time(20,0), то результат должен быть datetime(2018,9,11,20,0,0).

Лучшее, что я мог придумать, было следующее (пусть притворяются, что секунды и миллисекунды не имеют значения):

def adjust(datetime_obj, time_obj):
  if datetime_obj.time() < time_obj:
    datetime_obj -= relativedelta(days=1)
  datetime_obj -= relativedelta(hour=time_obj.hour, minute=time_obj.minute)

Есть ли библиотека, которая может выполнить эту операцию для меня?Это кажется относительно простой вещью и относительно распространенным случаем использования.Я был удивлен, обнаружив, что datetime.timedelta и dateutil.relativedelta были неспособны к этому.

Чтобы немного углубиться в это, я также хотел бы сказать: «Перейти в самую последнюю среду в 12: 00" .Таким образом, если сегодня среда в 10:00, она откатится на неделю, но если сегодня среда в 13:00, она просто откатится на час.

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