Jak obliczyć różnicę czasu w Pythonie?
Opublikowany: 2022-01-23Podczas 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
date
, - dwa obiekty
time
, lub - połączenie
date
itime
— obiektydatetime
.
Jak stworzyć obiekt daty w Pythonie
Zaimportujmy klasę date
z modułu datetime. Aby utworzyć obiekt daty w Pythonie, możesz użyć ogólnej składni datetime.date(<year>,<month>,<day>)
. Oto przykład tworzenia obiektu date
date1
:
from datetime import date date1 = datetime.date(2022,3,27) print(date1) # Output: 2022-03-27
Możesz wypróbować kod na kompilatorze Geekflare Python do przetestowania. Lub zainstaluj Pythona na swoim komputerze.
Jak pokazano powyżej, kiedy drukujesz datę, jest ona sformatowana w formacie YYYY-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 time
w Pythonie.
Jak stworzyć obiekt czasu w Pythonie
Aby utworzyć obiekt czasu, zaimportujmy klasę time
. Dowolny obiekt czasu w Pythonie można utworzyć przy użyciu klasy time
, określając następujące atrybuty klasy: hour
, minute
, second
i microsecond
.
Jednak wszystkie te atrybuty są opcjonalne. Jeśli nie określisz określonego atrybutu, powiedzmy second
, domyślnie jest on ustawiony na 0
.
Poniższy fragment kodu pokazuje, jak utworzyć obiekt czasu time1
. Podobnie jak w przypadku obiektu date
, możesz wydrukować obiekt time
, 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 date
nie ma informacji o czasie. A obiekt time
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 second
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 — jako daty, godziny i czasy. 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 date
, time
lub datetime
.
Jeśli dodasz lub odejmiesz dwa obiekty date
, time
lub datetime
, otrzymasz obiekt timedelta
. Ten obiekt timedelta
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
za pomocą wbudowanej w Pythona funkcji type()
.

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ę urodzenia jako drugi znacznik czasu.
W pierwszym kroku utwórzmy dwa obiekty datetime
:
- jeden na dziś, nazwijmy to
today
, i - kolejny na urodziny, nazwijmy to
bday
Klasa datetime
ma metodę now()
, która podaje aktualną lokalną datę i godzinę. Skorzystajmy więc z tego, aby uzyskać today
— naszą datę odniesienia.
today = datetime.datetime.now() print(today) # Sample Output: 2022-01-22 09:10:18.489538
W poniższym kodzie zastąp urodziny bday
urodzin, aby obliczyć czas pozostały do twoich urodzin w tym roku.
Jeśli czytasz to po twoich urodzinach, możesz ustawić bday
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 today
od dnia bday
, 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 timedelta
total_seconds()
w obiekcie 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:

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

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.
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żyj 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.