Я провел последний час, копаясь в документации по Python и отвечая на множество вопросов SO; пожалуйста, простите меня за то, что я еще один новичок в Python, пойманный в ловушку тайны разницы во времени в Python.
Моя цель – определить разницу между текущим временем и определенной датой/временем независимо от того, находится ли она в прошлом/будущем, и вернуть рабочий формат, например секунды.
Например, если введены значения 14:00 и 16:00 (сейчас), я бы хотел, чтобы было указано «-7200», что означает, что событие произошло два часа НАЗАД. Если входными данными являются пятница 16:00 (сейчас) и воскресенье 17:00, вывод должен быть «176400» секунд, что представляет два дня и 1 час с этого момента.
Вот что я пробовал...
Моя первая версия представляла собой функцию, которая брала временную метку строки и разбивала ее на несколько переменных, а затем сравнивала их. Это было неуклюже с множеством ошибок, и я думаю, что если бы я разместил его здесь, я был бы ответственен за рвоту программистов.
Я наткнулся на эту волшебную функцию timedelta и изучил документы и SO, но я не думаю, что она делает то, что я ищу.
У меня была идея преобразовать обе метки времени в секунды с начала эпохи, а затем вычесть, но это становится проблемой, если вычитание выполняется в неправильном порядке (разные случаи, если событие произойдет в будущем), и мне хочется добавить операторы if для проверки знак секунд будет неуклюжим, и его следует избегать.
Это мой текущий код (все еще нужно исправить для «двунаправленного» сравнения) из ранее решенного вопроса SO:
now = time.strftime("%a %b %d %H:%M:%S %Y")
then = time.ctime(os.path.getmtime("x.cache"))
tdelta = datetime.strptime(now, '%a %b %d %H:%M:%S %Y') - datetime.strptime(then, '%a %b %d %H:%M:%S %Y')
И я чувствую, что должен каким-то образом вытянуть из этого секунды, как в этом вопросе: Tython timedelta: не могу ли я просто получить в любой единице времени значение всей разницы?
Но я не понимаю, как соединить эти точки.
Как я могу это сделать?