datetime.timedelta în Python

Dată și oră Python 3.0+ (total_seconds: 3.2+)

O durată de timp: diferența dintre două date sau intervalul adăugat la o dată.

Sintaxă
from datetime import timedelta
timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)
durata.total_seconds()

Ce face datetime.timedelta

timedelta reprezintă o durată. O creezi cu zile, ore, minute, săptămâni etc., o aduni sau o scazi dintr-un date/datetime, sau o obții scăzând două date. Duratele se pot aduna, înmulți cu numere și compara.

Intern, durata este păstrată doar în days, seconds și microseconds. total_seconds() dă toată durata în secunde, de unde calculezi ușor ore sau minute. Nu există luni sau ani, pentru că au lungimi diferite.

Parametri

Parametru Descriere
days, seconds, ..., weeks Componentele duratei (pot fi și negative sau zecimale).

Ce returnează

Un obiect timedelta.

Exemple

Exemplul 1: Termene și durate

from datetime import date, datetime, timedelta
factura = date(2026, 10, 19)
print("Scadență:", factura + timedelta(days=30))
print("Acum o săptămână:", factura - timedelta(weeks=1))

intrare = datetime(2026, 10, 19, 8, 45)
iesire = datetime(2026, 10, 19, 17, 20)
lucrat = iesire - intrare
print(lucrat, lucrat.total_seconds() / 3600)

Rezultat

Scadență: 2026-11-18
Acum o săptămână: 2026-10-12
8:35:00 8.583333333333334

Exemplul 2: Componente și operații

from datetime import timedelta
d = timedelta(days=1, hours=5, minutes=30)
print(d, d.days, d.seconds, d.total_seconds())
print(d * 2, d / 2, timedelta(hours=-3))
ore, rest = divmod(int(d.total_seconds()), 3600)
print(f"{ore}h {rest // 60}min")

Rezultat

1 day, 5:30:00 1 19800 106200.0
2 days, 11:00:00 14:45:00 -1 day, 21:00:00
29h 30min

Greșeli frecvente

  • Citești durata.seconds crezând că este durata totală în secunde. Este doar restul de secunde fără zile; folosește total_seconds().
  • Încerci timedelta(months=1) și primești TypeError. Pentru luni, schimbă data cu replace() sau folosește biblioteca dateutil.

Comenzi înrudite