toHumanizedString method

String toHumanizedString()

Returns a natural-language description using the two largest non-zero units.

Implementation

String toHumanizedString() {
  final d = _abs;
  final h = d.inHours;
  final m = d.inMinutes % 60;
  final s = d.inSeconds % 60;

  String unit(int n, String singular) =>
      '$n ${n == 1 ? singular : '${singular}s'}';

  final parts = <String>[
    if (h > 0) unit(h, 'hour'),
    if (m > 0) unit(m, 'minute'),
    if (s > 0 || (h == 0 && m == 0)) unit(s, 'second'),
  ];

  return parts.take(2).join(' ');
}