DateTime.difference în Dart

Calculează timpul dintre două date, ca Duration: this minus other.

Sintaxă
Duration difference(DateTime other)

Ce face DateTime.difference

a.difference(b) returnează o Duration egală cu a - b. Dacă a este după b, durata este pozitivă; altfel este negativă. Din ea citești zilele, orele sau minutele cu inDays, inHours și celelalte.

Diferența se calculează între momente, deci funcționează corect și între o dată UTC și una locală. În ora locală, o diferență peste trecerea la ora de vară poate avea o oră în plus sau în minus (de exemplu 6 zile și 23 de ore), iar inDays rotunjește în jos. Pentru numărul de zile calendaristice, creează ambele date cu DateTime.utc.

Parametri

Parametru Descriere
other Data scăzută.

Ce returnează

Un Duration (poate fi negativ).

Exemple

Exemplul 1: Durata unei călătorii

void main() {
  var plecare = DateTime.utc(2026, 7, 10, 6, 45);
  var sosire = DateTime.utc(2026, 7, 10, 15, 20);
  var drum = sosire.difference(plecare);
  print(drum);
  print('${drum.inHours} ore și ${drum.inMinutes % 60} minute');
  print(plecare.difference(sosire));
  print(plecare.difference(sosire).isNegative);
}

Rezultat

8:35:00.000000
8 ore și 35 minute
-8:35:00.000000
true

Exemplul 2: Zile până la sfârșitul anului școlar

void main() {
  var azi = DateTime.utc(2026, 10, 19);
  var vacante = {
    'Crăciun': DateTime.utc(2026, 12, 20),
    'Paște': DateTime.utc(2027, 4, 24),
    'vara': DateTime.utc(2027, 6, 18),
  };
  vacante.forEach((nume, data) {
    print('Până la vacanța de $nume: ${data.difference(azi).inDays} zile');
  });
}

Rezultat

Până la vacanța de Crăciun: 62 zile
Până la vacanța de Paște: 187 zile
Până la vacanța de vara: 242 zile

Greșeli frecvente

  • Inversezi ordinea și primești o durată negativă. a.difference(b) înseamnă a - b: pune data mai târzie în stânga.
  • Numeri zile între date locale peste trecerea la ora de vară și primești cu o zi mai puțin. Folosește date UTC fără oră.

Comenzi înrudite

  • Duration.inDays: Dau durata întreagă exprimată într-o singură unitate: zile, ore, minute, secunde sau milisecunde (rotunjit spre zero).
  • DateTime.add: Returnează o dată nouă, mutată înainte (add) sau înapoi (subtract) cu o durată dată.
  • DateTime.isBefore: Compară două date: este înainte (isBefore), după (isAfter) sau exact în același moment (isAtSameMomentAs)?
  • Duration: Un interval de timp (de exemplu 2 ore și 30 de minute), independent de calendar; Duration.zero este durata 0.