duration static method
Implementation
static String duration(Duration duration, String format) {
bool root = true;
// 日->DD/D、时-> HH/H/hh/h、分 -> mm/m、秒 -> ss/s
if (format.contains('DD')) {
int days = duration.inDays.abs();
format = format.replaceAll('DD', days < 10 ? '0$days' : '$days');
root = false;
} else if (format.contains('D')) {
format = format.replaceAll('D', '${duration.inDays.abs()}');
root = false;
}
if (format.contains('HH') || format.contains('hh')) {
int hours = root ? duration.inHours.abs() : duration.inHours.remainder(24).abs();
format = format.replaceAll(RegExp(r'HH|hh'), hours < 10 ? '0$hours' : '$hours');
root = false;
} else if (format.contains('H') | format.contains('h')) {
int hours = root ? duration.inHours.abs() : duration.inHours.remainder(24).abs();
format = format.replaceAll(RegExp(r'H|h'), '$hours');
root = false;
}
if (format.contains('mm')) {
int minutes = root ? duration.inMinutes.abs() : duration.inMinutes.remainder(60).abs();
format = format.replaceAll('mm', minutes < 10 ? '0$minutes' : '$minutes');
root = false;
} else if (format.contains('m')) {
int minutes = root ? duration.inMinutes.abs() : duration.inMinutes.remainder(60).abs();
format = format.replaceAll('m', '$minutes');
root = false;
}
if (format.contains('ss')) {
int seconds = root ? duration.inSeconds.abs() : duration.inSeconds.remainder(60).abs();
format = format.replaceAll('ss', seconds < 10 ? '0$seconds' : '$seconds');
} else if (format.contains('s')) {
int seconds = root ? duration.inSeconds.abs() : duration.inSeconds.remainder(60).abs();
format = format.replaceAll('s', '$seconds');
}
return format;
}