format method

String format([
  1. String pattern = 'HH:mm:ss'
])

格式化 format 支持的格式:

  • HH: 两位小时
  • H: 一位小时
  • mm: 两位分钟
  • m: 一位分钟
  • ss: 两位秒
  • s: 一位秒

Implementation

String format([String pattern = 'HH:mm:ss']) {
  final int days = inDays;
  final int hours = inHours % Duration.hoursPerDay;
  final int minutes = inMinutes % Duration.minutesPerHour;
  final int seconds = inSeconds % Duration.secondsPerMinute;

  String result = pattern.toLowerCase();

  // 处理天
  if (days != 0 && result.contains('d')) {
    result = result.replaceAll('dd', days.toString());
    result = result.replaceAll('d', days.toString());
  } else {
    final index = result.indexOf('h');
    if (index != -1) {
      result = result.substring(index);
    }
  }

  // 处理小时
  if (hours != 0 && result.contains('h')) {
    if (result.contains('hh')) {
      result = result.replaceAll('hh', _formatNum(hours));
    } else if (result.contains('h')) {
      result = result.replaceAll('h', hours.toString());
    }
  } else {
    final index = result.indexOf('m');
    if (index != -1) {
      result = result.substring(index);
    }
  }

  // 处理分钟
  if (result.contains('mm')) {
    result = result.replaceAll('mm', _formatNum(minutes));
  } else if (result.contains('m')) {
    result = result.replaceAll('m', minutes.toString());
  }

  // 处理秒
  if (result.contains('ss')) {
    result = result.replaceAll('ss', _formatNum(seconds));
  } else if (result.contains('s')) {
    result = result.replaceAll('s', seconds.toString());
  }

  return result;
}