Я пытаюсь изменить объект 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, она просто откатится на час.