Cum se calculează diferența de timp în Python
Publicat: 2022-01-23Când lucrați cu date și ore în Python, va trebui adesea să calculați diferența de timp. În acest tutorial, veți învăța cum să calculați diferența dintre două marcaje temporale în ore, minute și secunde.
Până la sfârșitul acestui tutorial, veți învăța:
- cum să utilizați modulul
datetime
al lui Python pentru a lucra cu datele și ora, - ce sunt obiectele
timedelta
și cum sunt utile și - calculați diferența de timp dintre oricare două marcaje temporale — în ore, minute și secunde.
Să începem.
Cum să utilizați modulul datetime al lui Python
Pentru a lucra cu datele și orele în Python, veți folosi modulul datetime
. Modulul datetime
face parte din biblioteca standard Python. Deci, puteți continua și importa imediat în mediul dvs. de lucru, astfel:
import datetime
Pentru a calcula diferența de timp, trebuie să creați două marcaje temporale diferite. Puteți alege să creați:
- două obiecte
date
, - două obiecte de
time
, sau - o combinație de
date
șitime
— obiectedatetime
.
Cum se creează un obiect data în Python
Să importăm clasa de date
din modulul datetime. Pentru a crea un obiect dată în Python, puteți utiliza sintaxa generală datetime.date(<year>,<month>,<day>)
. Iată un exemplu de creare a unui obiect date
date1
:
from datetime import date date1 = datetime.date(2022,3,27) print(date1) # Output: 2022-03-27
Puteți încerca codul de pe compilatorul Geekflare Python pentru a testa. Sau, instalați Python pe computer.
După cum se arată mai sus, atunci când imprimați data, aceasta este formatată în formatul YYYY-MM-DD
pentru date.
Notă : Asigurați-vă că specificați luna ca număr întreg, fără zerouri de început . Este probabil că sunteți obișnuit să adăugați un zero de început la lună atunci când notați datele.
De exemplu, pentru a specifica o dată în iunie, a șasea lună a anului: utilizați 6 și nu 06.
De exemplu, încercați să rulați următorul fragment de cod, unde luna a fost menționată ca 03
în loc de doar 3
. Veți vedea că afișează o eroare de sintaxă așa cum se arată:
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
Să vedem acum cum să creăm un obiect de time
în Python.
Cum se creează un obiect de timp în Python
Pentru a crea un obiect de timp, să importăm clasa de time
. Orice obiect de timp Python poate fi creat folosind clasa de time
prin specificarea următoarelor atribute de clasă: hour
, minute
, second
și microsecond
.
Cu toate acestea, toate aceste atribute sunt opționale. Dacă nu specificați un anumit atribut, de exemplu, second
, acesta este setat la 0
în mod implicit.
Următorul fragment de cod arată cum puteți crea un obiect de timp time1
. Ca și în cazul obiectului date
, puteți imprima obiectul time
pentru a vedea ora formatată.
from datetime import time time1 = datetime.time(13,27,45,4600) print(time1) # Output: 13:27:45.004600
Cum se creează un obiect datetime în Python
După cum puteți vedea, obiectul date
nu are informații despre oră. Iar obiectul time
nu conține informații despre dată.
Cu toate acestea, în practică, veți avea nevoie atât de informații despre dată, cât și despre oră. Deci, este recomandat să utilizați clasa datetime
în schimb.
Puteți accesa clasa datetime
și puteți crea obiecte datetime
în Python, după cum se arată mai jos:
dt1 = datetime.datetime(2022,3,27,13,27,45,46000) print(dt1) # Output: 2022-03-27 13:27:45.046000
Acum să creăm un alt obiect datetime dt2
fără al second
atribut. Puteți vedea că este setat la 0
– valoarea implicită.
dt2 = datetime.datetime(2022,6,30,14,28) print(dt2) # Output: 2022-06-30 14:28:00
Până acum ați învățat cum să creați marcaje temporale în Python - ca date, ore și date. Acum este timpul să vedem cum puteți calcula diferența dintre oricare două marcaje temporale.
Mergeți la următoarea secțiune pentru a afla.
Cum se utilizează obiectul timedelta în Python
În Python, timedelta
denotă un interval de timp. Este diferența dintre două obiecte date
, time
sau datetime
.
Dacă adăugați sau scădeți două obiecte date
, time
sau datetime
, veți obține un obiect timedelta
. Acest obiect timedelta
are atribute și metode utile care pot ajuta la calcularea diferenței de timp.
Să mergem mai departe și să calculăm diferența dintre cele două obiecte 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'>
Din fragmentul de cod de mai sus, puteți vedea că variabila tdelta
deține diferența de timp dintre dt1
și dt2
. Și tipul de tdelta
este verificat ca fiind din clasa timedelta
folosind funcția încorporată type()
din Python.

Acum să codificăm un alt exemplu.
Cum să găsiți diferența de timp între două date
Să luăm un exemplu simplu, dar interesant.
Problemă : Pentru a calcula diferența de timp dintre data curentă (azi) și ziua ta de naștere.
Pentru a face acest lucru, setați astăzi ca primă marcaj de timp și ziua de naștere ca a doua marcaj de timp.
Ca prim pas, să creăm două obiecte datetime
:
- unul pentru azi, să-i spunem
today
și - altul de ziua ta, să-i
bday
ziua
Clasa datetime
are metoda now()
care vă oferă data și ora locală curentă. Așa că să-l folosim pentru a primi today
- data noastră de referință.
today = datetime.datetime.now() print(today) # Sample Output: 2022-01-22 09:10:18.489538
În codul de mai jos, înlocuiți ziua de bday
cu ziua de naștere pentru a calcula timpul rămas pentru ziua de naștere din acest an.
Dacă citești asta după ce a trecut ziua ta de naștere, nu bday
să setați ziua la următoarea zi de naștere.
bday = datetime.datetime(2022,8,30,11,59) print(bday) # Sample Output: 2022-08-30 11:59:00
Următorul pas este de a calcula time_diff
care este un obiect timedleta
, așa cum a fost explicat mai devreme. Pur și simplu scade today
din bday
ta și vei avea diferența de timp.
time_diff = bday - today print(f"Your birthday is in {time_diff}") # Output Your birthday is in 220 days, 2:46:00.127416
Pentru a afla numărul de zile rămase, utilizați atributul zile pe time_diff
, după cum se arată:
tdays = time_diff.days print(f"Your birthday is in {tdays} days.") # Output Your birthday is in 220 days.
Cum să găsiți diferența de timp în secunde
Să calculăm acum câte secunde sunt ziua ta de naștere.
Pentru a calcula diferența totală de timp în secunde, utilizați metoda total_seconds()
pe obiectul timedelta
time_diff
.
tsecs = time_diff.total_seconds() print(f"Your birthday is {tsecs} seconds away.") # Output Your birthday is 19017960.127416 seconds away.
Ei bine, asta e o așteptare prea lungă!
Acestea fiind spuse, acum știți cum să calculați diferența de timp între oricare două marcaje de timp în secunde.
Să revizuim acum câteva elemente de bază și să scriem următoarele. O zi este compusă din 24 de ore, o oră are 60 de minute și 60 de secunde alcătuiesc un minut.
Acest lucru este rezumat în imaginea de mai jos:

Deci, pentru a converti de la secunde la minute, ore și zile, puteți utiliza următorul tabel și puteți împărți la factorul de conversie corespunzător.

În secțiunile următoare, să convertim diferența de timp în secunde în minute și ore.
Cum să găsiți diferența de timp în minute
Pentru a obține diferența de timp în minute, trebuie doar să împărțiți numărul total de secunde la 60.
Să împărțim tsecs
la 60 și să le stocăm într-o variabilă numită tmins
, astfel:
tmins = tsecs/60 print(f"Your birthday is {tmins} minutes away.") # Output Your birthday is 316966.0021236 minutes away.
Cum să găsiți diferența de timp în ore
Acum că ați calculat diferența de timp în minute, o puteți împărți la un factor de 60 pentru a obține diferența în ore. Sau puteți împărți numărul total de secunde la 60*60 = 3600.
thrs = tsecs/(60*60) print(f"Your birthday is {thrs} hours away.") # Output Your birthday is 5282.76670206 hours away.
Deci ați învățat acum cum să calculați diferența de timp în orice unitate la alegere.
Concluzie
În acest tutorial, ați învățat cum să:
- creați și lucrați cu date și ore folosind modulul
datetime
al lui Python, - utilizați obiecte
timedelta
pentru a obține o perioadă de timp sau diferență de timp și - calculați diferența de timp în secunde, minute și ore.
Sper că ați găsit acest tutorial de ajutor. Acum că știți totul despre calcularea diferenței de timp în Python, este timpul să vă puneți abilitățile în practică.
Învățare și codare fericită!
Aflați cum să scrieți egal sau nu egal cu codul sau să faceți un joc cu șarpe în python aici.