formatDurationReadable static method
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);
}