Cum se calculează diferența de timp în Python

Câ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 ele utile și
  • calculați diferența de timp dintre oricare două marcaje temporale — în ore, minute și secunde.

Să începem.

Cum se utilizează 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 timp, sau
  • o combinație de date și oră—obiecte datetime.

Cum se creează un obiect data în Python

Să importăm clasa de date din modulul datetime. Pentru a crea un obiect data în Python, puteți utiliza sintaxa generală datetime.date(,,). Iată un exemplu de creare a unui obiect data date1:

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

# Output: 2022-03-27

Puteți încerca codul de pe compilatorul tipstrick.ro 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 AAAA-LL-ZZ 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.

  Cum să protejați datele clienților cu un instrument CIAM

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 timp în Python.

Cum se creează un obiect de timp în Python

Pentru a crea un obiect de timp, să importăm clasa de timp. Orice obiect de timp Python poate fi creat folosind clasa de timp prin specificarea următoarelor atribute de clasă: oră, minut, secundă și microsecundă.

Cu toate acestea, toate aceste atribute sunt opționale. Dacă nu specificați un anumit atribut, de exemplu, al doilea, acesta este setat la 0 în mod implicit.

Următorul fragment de cod arată cum puteți crea un obiect time time1. Ca și în cazul obiectului dată, puteți imprima obiectul oră 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 dată nu are informații despre oră. Iar obiectul oră 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 doilea 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 de timp.

Mergeți la următoarea secțiune pentru a afla.

  Cum să scrieți pe un PDF în 2022

Cum se utilizează obiectul timedelta în Python

În Python, timedelta denotă un interval de timp. Este diferența dintre două obiecte date, oră sau datetime.

Dacă adăugați sau scădeți două obiecte date, oră 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 Python încorporat tip() funcţie.

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 astăzi și
  • altul de ziua ta, să-i spunem ziua

Clasa datetime are metoda now() care vă oferă data și ora locală curentă. Așa că haideți să-l folosim pentru azi – 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 naștere cu ziua de naștere pentru a calcula timpul rămas pentru ziua de naștere în acest an.

Dacă citești asta după ce a trecut ziua ta de naștere, nu ezitați 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 astăzi din ziua 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.

  Cele mai bune 5 emulatori de consolă pentru Mac-ul tău

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:

Ore, minute și secunde

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.

Tabelul de conversie a timpului

Î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.

Așa că acum ați învățat 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.