formatDurationReadable static method

String formatDurationReadable(
  1. Duration duration, {
  2. String separator = ' ',
  3. String textForDays = 'Hari',
  4. String textForHours = 'Jam',
  5. String textForMinutes = 'Menit',
  6. String textForSeconds = 'Detik',
})

Get readable Duration

For now is support only Days, Hours, Minutes, Seconds

final duration = Duration(days: 1,hours: 10,minutes: 59,seconds: 10);

final result = GlobalFunction.formatDuration(duration);

print(result) // 1 Hari 10 Jam 59 Menit 10 Detik

Reference https://stackoverflow.com/a/60904049/7360353

Implementation

static String formatDurationReadable(
  Duration duration, {
  String separator = ' ',
  String textForDays = 'Hari',
  String textForHours = 'Jam',
  String textForMinutes = 'Menit',
  String textForSeconds = 'Detik',
}) {
  var seconds = duration.inSeconds;

  final days = seconds ~/ Duration.secondsPerDay;
  seconds -= days * Duration.secondsPerDay;

  final hours = seconds ~/ Duration.secondsPerHour;
  seconds -= hours * Duration.secondsPerHour;

  final minutes = seconds ~/ Duration.secondsPerMinute;
  seconds -= minutes * Duration.secondsPerMinute;

  final List<String> tokens = [];
  if (days != 0) {
    tokens.add('$days $textForDays');
  }

  if (tokens.isNotEmpty || hours != 0) {
    tokens.add('$hours $textForHours');
  }

  if (tokens.isNotEmpty || minutes != 0) {
    tokens.add('$minutes $textForMinutes');
  }

  tokens.add('$seconds $textForSeconds');

  return tokens.join(separator);
}