format method

String format(
  1. String format
)

Implementation

String format(String format) {
  // 处理负数
  final isNegative = inMicroseconds < 0;
  final absDuration = abs();

  // 1. 提取格式字符串中的所有时间单位(d/h/m/s/f),并确定最左侧的单位
  final units = _extractUnits(format);
  final String? primaryUnit = units.isNotEmpty ? units.first : null;

  // 2. 计算各单位的数值(区分累加值/周期值)
  final values = _calculateValues(absDuration, primaryUnit);

  // 3. 替换格式字符串中的占位符
  String result = format;
  result = _replacePlaceholder(result, 'd', values['d']!);
  result = _replacePlaceholder(result, 'h', values['h']!);
  result = _replacePlaceholder(result, 'm', values['m']!);
  result = _replacePlaceholder(result, 's', values['s']!);
  result = _replacePlaceholder(result, 'f', values['f']!);

  // 添加负号
  return isNegative ? '-$result' : result;
}