duration static method
A short duration such as "1 hour 30 minutes".
Implementation
static String duration(Duration d, {ChronoLocale? locale, int maxParts = 2}) {
final l = locale ?? ChronoLocale.en;
final parts = <String>[];
var rest = d.abs();
for (final (unit, size) in [
(ChronoUnit.day, const Duration(days: 1)),
(ChronoUnit.hour, const Duration(hours: 1)),
(ChronoUnit.minute, const Duration(minutes: 1)),
(ChronoUnit.second, const Duration(seconds: 1)),
]) {
final n = rest.inMicroseconds ~/ size.inMicroseconds;
if (n > 0 && parts.length < maxParts) {
parts.add(l.unit(unit, n));
rest -= size * n;
}
}
return parts.isEmpty ? l.unit(ChronoUnit.second, 0) : parts.join(' ');
}