Python - porównanie daty i czasu za pomocą znaczników czasu, timedelta

Spędziłem ostatnią godzinę, przeglądając dokumenty Pythona i wiele pytań dotyczących SO; wybacz mi, że jestem kolejnym nowicjuszem Pythona uwięzionym przez tajemnicę różnicy czasu w Pythonie.

Moim celem jestokreśl różnicę między aktualnym czasem a określoną datą / czasem, niezależnie od tego, czy byłeś w przeszłości / przyszłości i zwróć sprawny format, taki jak sekundy.

Na przykład, jeśli dane wejściowe to 14:00 i 16:00 (teraz), chciałbym powiedzieć „-7200”, co oznacza, że ​​zdarzenie miało miejsce dwie godziny AGO. Jeśli dane wejściowe to Fri 4:00 PM (now) i Sun 17:00 PM, wyjście powinno wynosić „176400” sekund, co oznacza dwa dni i 1 godzinę od teraz.

Oto rzeczy, które próbowałem ...

Moja pierwsza wersja była funkcją, która pobierała znacznik czasu łańcucha i składała go na wiele zmiennych, a następnie je porównywała. Było to niezgrabne z wieloma błędami i wyobrażam sobie, że gdybym je opublikował, byłbym odpowiedzialny za rzucanie się programistów.

Natknąłem się na tę magiczną funkcję timedelta i zbadałem dokumenty i TAK, ale nie sądzę, żeby to robiło to, czego szukam.

Miałem pomysł, aby konwertować oba znaczniki czasu na sekundy od epoki, a następnie odejmować, ale staje się to problemem, jeśli odejmowanie odbywa się w złej kolejności (różne przypadki, jeśli zdarzenie jest w przyszłości), i mam ochotę dodać instrukcje if, aby sprawdzić znak sekund byłby niezgrabny i coś, czego należałoby unikać.

To jest mój obecny kod (nadal musi być naprawiony dla porównania „dwukierunkowego”), z wcześniej rozwiązanego pytania 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')

I czuję, że powinienem być w stanie wyciągnąć z tego kilka sekund, jak w tym pytaniu:Timedelta Pythona: czy nie mogę po prostu dostać się do jakiejkolwiek jednostki czasu, której chcę wartość całej różnicy?

Ale nie rozumiem, jak połączyć te kropki.

Jak mogę to osiągnąć?

questionAnswers(3)

yourAnswerToTheQuestion