toCountdown method

String toCountdown()

Returns a human-readable countdown string, e.g. "2d 3h 45m 10s". Omits zero-value units except seconds.

const Duration(days: 2, hours: 3).toCountdown() // '2d 3h 0m 0s'

Implementation

String toCountdown() {
  final abs = this.abs();
  final d = abs.inDays;
  final h = abs.inHours.remainder(24);
  final m = abs.inMinutes.remainder(60);
  final s = abs.inSeconds.remainder(60);
  final parts = <String>[];
  if (d > 0) parts.add('${d}d');
  if (d > 0 || h > 0) parts.add('${h}h');
  parts.add('${m}m');
  parts.add('${s}s');
  return '${isNegative ? '-' : ''}${parts.join(' ')}';
}