Jak obliczyć różnicę czasu w Pythonie?

Podczas pracy z datami i godzinami w Pythonie często będziesz musiał obliczyć różnicę czasu. W tym samouczku dowiesz się, jak obliczyć różnicę między dwoma znacznikami czasu w godzinach, minutach i sekundach.

Pod koniec tego samouczka nauczysz się:

  • jak używać modułu datetime Pythona do pracy z datami i czasem,
  • czym są obiekty timedelta i jak są użyteczne oraz
  • obliczyć różnicę czasu między dowolnymi dwoma znacznikami czasu — w godzinach, minutach i sekundach.

Zacznijmy.

Jak korzystać z modułu datetime Pythona

Do pracy z datami i godzinami w Pythonie użyjesz modułu datetime. Moduł datetime jest częścią standardowej biblioteki Pythona. Możesz więc od razu zaimportować go do swojego środowiska pracy, w następujący sposób:

import datetime

Aby obliczyć różnicę czasu, musisz utworzyć dwa różne znaczniki czasu. Możesz stworzyć:

  • dwa przedmioty randkowe,
  • dwa obiekty czasu, lub
  • połączenie daty i godziny — obiekty typu datetime.

Jak stworzyć obiekt daty w Pythonie

Zaimportujmy klasę daty z modułu datetime. Aby utworzyć obiekt daty w Pythonie, możesz użyć ogólnej składni datetime.date(,,). Oto przykład tworzenia obiektu daty data1:

from datetime import date
date1 = datetime.date(2022,3,27)
print(date1)

# Output: 2022-03-27

Możesz wypróbować kod na kompilatorze newsblog.pl Python do przetestowania. Lub zainstaluj Pythona na swoim komputerze.

Jak pokazano powyżej, kiedy drukujesz datę, jest ona sformatowana w formacie RRRR-MM-DD dla dat.

Uwaga: pamiętaj, aby określić miesiąc jako liczbę całkowitą bez zer wiodących. Prawdopodobnie przyzwyczaiłeś się do dodawania wiodącego zera do miesiąca podczas zapisywania dat.

Na przykład, aby określić datę w czerwcu, szóstym miesiącu roku: użyj 6, a nie 06.

Na przykład spróbuj uruchomić następujący fragment kodu — w którym miesiąc został wymieniony jako 03 zamiast tylko 3. Zobaczysz, że zgłasza błąd składni, jak pokazano:

date1 = datetime.date(2022,03,27)

print(date1)

# Error Message
File "<ipython-input-12-6eb72084e6ce>", line 1
    date1 = datetime.date(2022,03,27)
                                ^
SyntaxError: invalid token

Zobaczmy teraz, jak utworzyć obiekt czasu w Pythonie.

Jak stworzyć obiekt czasu w Pythonie

Aby utworzyć obiekt czasu, zaimportujmy klasę czasu. Dowolny obiekt czasu w Pythonie można utworzyć przy użyciu klasy czasu, określając następujące atrybuty klasy: godzina, minuta, sekunda i mikrosekunda.

Jednak wszystkie te atrybuty są opcjonalne. Jeśli nie określisz jakiegoś atrybutu, powiedzmy, po drugie, domyślnie jest on ustawiony na 0.

Poniższy fragment kodu pokazuje, jak utworzyć obiekt czasu time1. Podobnie jak w przypadku obiektu daty, możesz wydrukować obiekt czasu, aby zobaczyć sformatowany czas.

from datetime import time
time1 = datetime.time(13,27,45,4600)
print(time1)

# Output: 13:27:45.004600

Jak stworzyć obiekt datetime w Pythonie

Jak widać, obiekt daty nie ma informacji o czasie. A obiekt czasu nie zawiera informacji o dacie.

Jednak w praktyce będziesz potrzebować zarówno informacji o dacie, jak i godzinie. Dlatego zaleca się, aby zamiast tego używać klasy datetime.

Możesz uzyskać dostęp do klasy datetime i tworzyć obiekty datetime w Pythonie, jak pokazano poniżej:

dt1 = datetime.datetime(2022,3,27,13,27,45,46000)
print(dt1)

# Output: 2022-03-27 13:27:45.046000

Stwórzmy teraz kolejny obiekt datetime dt2 bez drugiego atrybutu. Widać, że jest ustawiony na 0 – wartość domyślna.

dt2 = datetime.datetime(2022,6,30,14,28)
print(dt2)

# Output: 2022-06-30 14:28:00

Do tej pory nauczyłeś się tworzyć znaczniki czasu w Pythonie — takie jak daty, godziny i daty. Nadszedł czas, aby zobaczyć, jak obliczyć różnicę między dowolnymi dwoma znacznikami czasu.

Przejdź do następnej sekcji, aby się dowiedzieć.

Jak używać obiektu timedelta w Pythonie

W Pythonie timedelta oznacza przedział czasu. Jest to różnica między dwoma obiektami daty, godziny lub daty i godziny.

Jeśli dodasz lub odejmiesz dwa obiekty daty, godziny lub daty i godziny, otrzymasz obiekt timedelta. Ten obiekt delta czasu ma przydatne atrybuty i metody, które mogą pomóc w obliczeniu różnicy czasu.

Przejdźmy dalej i obliczmy różnicę między dwoma obiektami datetime dt1 i dt2.

dt1 = datetime.datetime(2022,3,27,13,27,45,46000) 
dt2 = datetime.datetime(2022,6,30,14,28) 
tdelta = dt2 - dt1 
print(tdelta) 
print(type(tdelta)) 

# Output 
95 days, 1:00:14.954000 
<class 'datetime.timedelta'>

Z powyższego fragmentu kodu widać, że zmienna tdelta zawiera różnicę czasu między dt1 i dt2. A typ tdelta jest weryfikowany pod kątem klasy timedelta przy użyciu wbudowanej funkcji Pythona rodzaj() funkcjonować.

Teraz zakodujmy inny przykład.

Jak znaleźć różnicę czasu między dwiema datami

Weźmy prosty, ale interesujący przykład.

Problem: Aby obliczyć różnicę czasu między bieżącą datą (dzisiaj) a datą urodzin.
Aby to zrobić, ustaw dzisiaj jako pierwszy znacznik czasu, a datę urodzin jako drugi znacznik czasu.

W pierwszym kroku utwórzmy dwa obiekty datetime:

  • jeden na dziś, nazwijmy to dzisiaj, i
  • kolejny na urodziny, nazwijmy to urodziny

Klasa datetime posiada metodę now(), która podaje aktualną lokalną datę i godzinę. Użyjmy go więc dzisiaj — nasza data referencyjna.

today = datetime.datetime.now()
print(today)

# Sample Output: 2022-01-22 09:10:18.489538

W poniższym kodzie zastąp bday swoją datą urodzin, aby obliczyć czas pozostały do ​​Twoich urodzin w tym roku.

Jeśli czytasz to po twoich urodzinach, możesz ustawić urodziny na następne urodziny.

bday = datetime.datetime(2022,8,30,11,59)
print(bday)

# Sample Output: 2022-08-30 11:59:00

Następnym krokiem jest obliczenie time_diff, który jest obiektem timedleta, jak wyjaśniono wcześniej. Po prostu odejmij dzień dzisiejszy od urodzin, a uzyskasz różnicę czasu.

time_diff = bday - today
print(f"Your birthday is in {time_diff}")

# Output
Your birthday is in 220 days, 2:46:00.127416

Aby poznać liczbę pozostałych dni, użyj atrybutu days w time_diff, jak pokazano:

tdays = time_diff.days
print(f"Your birthday is in {tdays} days.")

# Output
Your birthday is in 220 days.

Jak znaleźć różnicę czasu w sekundach

Obliczmy teraz, ile sekund dzieli Cię od Twoich urodzin.

Aby obliczyć całkowitą różnicę czasu w sekundach, użyj metody total_seconds() w obiekcie timedelta time_diff.

tsecs = time_diff.total_seconds()
print(f"Your birthday is {tsecs} seconds away.")

# Output
Your birthday is 19017960.127416 seconds away.

Cóż, to za długo czekać!

To powiedziawszy, teraz wiesz, jak obliczyć różnicę czasu między dowolnymi dwoma znacznikami czasu w sekundach.

Wróćmy teraz do podstaw i zapiszmy poniższe. Dzień składa się z 24 godzin, godzina to 60 minut, a 60 sekund to minuta.

Jest to podsumowane na poniższym obrazku:

Godziny, minuty i sekundy

Aby przekonwertować sekundy na minuty, godziny i dni, możesz użyć poniższej tabeli i podzielić przez odpowiedni współczynnik konwersji.

Tabela konwersji czasu

W następnych sekcjach przekonwertujmy różnicę czasu w sekundach na minuty i godziny.

Jak znaleźć różnicę czasu w minutach

Aby uzyskać różnicę czasu w minutach, wystarczy podzielić całkowitą liczbę sekund przez 60.

Podzielmy tsecs przez 60 i zapiszmy je w zmiennej o nazwie tmins, w ten sposób:

tmins = tsecs/60
print(f"Your birthday is {tmins} minutes away.")

# Output
Your birthday is 316966.0021236 minutes away.

Jak znaleźć różnicę czasu w godzinach?

Teraz, gdy obliczyłeś różnicę czasu w minutach, możesz podzielić ją przez współczynnik 60, aby uzyskać różnicę w godzinach. Możesz też podzielić całkowitą liczbę sekund przez 60*60 = 3600.

thrs = tsecs/(60*60)
print(f"Your birthday is {thrs} hours away.")

# Output
Your birthday is 5282.76670206 hours away.

Więc teraz nauczyłeś się obliczać różnicę czasu w dowolnej wybranej jednostce.

Wniosek

W tym samouczku nauczyłeś się:

  • tworzyć i pracować z datami i godzinami za pomocą modułu datetime Pythona,
  • używać obiektów timedelta, aby uzyskać rozpiętość czasu lub różnicę czasu, i
  • obliczyć różnicę czasu w sekundach, minutach i godzinach.

Mam nadzieję, że ten samouczek okazał się pomocny. Teraz, gdy wiesz już wszystko o obliczaniu różnicy czasu w Pythonie, nadszedł czas, aby przećwiczyć swoje umiejętności.

Miłej nauki i kodowania!

Dowiedz się, jak pisać równe lub nierówne kodowi lub stworzyć grę w węża w Pythonie tutaj.