duration static method

String duration(
  1. Duration duration,
  2. String format
)

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;
}