duration static method

String duration(
  1. Duration d, {
  2. ChronoLocale? locale,
  3. int maxParts = 2,
})

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(' ');
}