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

Opublikowany: 2022-01-23

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 date ,
  • dwa obiekty time , lub
  • połączenie date i time — obiekty datetime .

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:

Godziny, minuty i sekundy

Aby przeliczyć 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.

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.