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.secondscrezând că este durata totală în secunde. Este doar restul de secunde fără zile; foloseștetotal_seconds(). - Încerci
timedelta(months=1)și primeștiTypeError. Pentru luni, schimbă data cureplace()sau folosește bibliotecadateutil.
Comenzi înrudite
datetime.datetime: Clasa pentru o dată împreună cu ora: creare, data și ora curentă, calcule și comparații.datetime.date și date.today(): Clasa pentru o dată calendaristică fără oră: zi, lună, an.replace() pentru date și ore: Creează o copie a unei date sau ore, cu unele componente schimbate.