Ce face Duration.inDays
Fiecare proprietate inX transformă toată durata în unitatea respectivă și taie restul: pentru 2 ore și 30 de minute, inHours este 2, inMinutes este 150, iar inSeconds este 9000. Nu sunt componentele duratei, ci totalul.
Pentru afișări de tipul „2 ore și 30 de minute” combini o proprietate cu restul împărțirii: d.inHours și d.inMinutes % 60. Pentru precizie mai mare există și inMicroseconds. La durate negative, valorile sunt negative și rotunjite tot spre zero.
Ce returnează
Un int.
Exemple
Exemplul 1: Aceeași durată în unități diferite
void main() {
var d = Duration(days: 1, hours: 2, minutes: 30, seconds: 15, milliseconds: 500);
print(d.inDays);
print(d.inHours);
print(d.inMinutes);
print(d.inSeconds);
print(d.inMilliseconds);
print(Duration(minutes: -90).inHours);
}
Rezultat
1
26
1590
95415
95415500
-1
Exemplul 2: Afișare prietenoasă
String frumos(Duration d) {
var parti = <String>[];
if (d.inDays > 0) parti.add('${d.inDays} zile');
if (d.inHours % 24 > 0) parti.add('${d.inHours % 24} ore');
if (d.inMinutes % 60 > 0) parti.add('${d.inMinutes % 60} minute');
if (parti.isEmpty) parti.add('${d.inSeconds} secunde');
return parti.join(', ');
}
void main() {
print(frumos(Duration(minutes: 135)));
print(frumos(Duration(hours: 50)));
print(frumos(Duration(seconds: 42)));
var drum = DateTime.utc(2026, 7, 2, 9, 15).difference(DateTime.utc(2026, 7, 1, 22, 0));
print('Drumul Iași–Timișoara durează ${frumos(drum)}');
}
Rezultat
2 ore, 15 minute
2 zile, 2 ore
42 secunde
Drumul Iași–Timișoara durează 11 ore, 15 minute
Greșeli frecvente
- Crezi că
inMinutesdă doar minutele „rămase”: pentru 2 ore și 5 minute dă 125. Pentru restul scrieinMinutes % 60.
Comenzi înrudite
Duration: Un interval de timp (de exemplu 2 ore și 30 de minute), independent de calendar; Duration.zero este durata 0.DateTime.difference: Calculează timpul dintre două date, ca Duration: this minus other.Stopwatch.elapsed: Timpul măsurat de cronometru: ca Duration (elapsed) sau ca număr de milisecunde (elapsedMilliseconds).