toStandardFormat method

String toStandardFormat()

Implementation

String toStandardFormat() {
  final hours = inHours.abs();
  final minutes = inMinutes.abs() - (hours * 60);
  final seconds = inSeconds.abs() - (minutes * 60) - (hours * 60 * 60);
  final fraction =
      (inMicroseconds.abs() - (seconds * _microsPerSecond) - (minutes * _microsPerMinute) - (hours * _microsPerHour))
              .toDouble() /
          _microsPerSecond;

  final stringBuffer = StringBuffer();
  final sign = isNegative ? '-' : '';
  stringBuffer.write(sign);
  // Hours
  if (hours > 0) {
    stringBuffer.write('${hours.toString().padLeft(2, '0')}:');
  }
  // Minutes
  if (minutes > 0 || hours > 0) {
    stringBuffer.write('${minutes.toString().padLeft(2, '0')}:');
  }
  // Seconds
  if (hours > 0 || minutes > 0) {
    stringBuffer.write(seconds.toString().padLeft(2, '0'));
  } else {
    stringBuffer.write(seconds.toString());
  }
  // Fraction
  if (fraction > 0) {
    stringBuffer.write(fraction.toString().substring(1)); // cut off the leading '0'
  }
  return stringBuffer.toString();
}