formatted property

String get formatted

Returns a human-readable string, e.g. "1h 23m 45s", "45s", "2d 3h".

const Duration(hours: 1, minutes: 23, seconds: 45).formatted
// '1h 23m 45s'

Implementation

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