27 lines
842 B
Dart
27 lines
842 B
Dart
|
extension DurationToHumanReadableString on Duration {
|
||
|
String toHumanReadableString({padZero = true}) {
|
||
|
final mm = inMinutes
|
||
|
.remainder(60)
|
||
|
.toString()
|
||
|
.padLeft(2, !padZero && inHours == 0 ? '' : '0');
|
||
|
final ss = inSeconds.remainder(60).toString().padLeft(2, '0');
|
||
|
|
||
|
if (inHours > 0) {
|
||
|
final hh = inHours.toString().padLeft(2, !padZero ? '' : '0');
|
||
|
return '$hh:$mm:$ss';
|
||
|
}
|
||
|
|
||
|
return '$mm:$ss';
|
||
|
}
|
||
|
}
|
||
|
|
||
|
extension ParseDuration on Duration {
|
||
|
static Duration fromString(String duration) {
|
||
|
final parts = duration.split(':').reversed.toList();
|
||
|
final seconds = int.parse(parts[0]);
|
||
|
final minutes = parts.length > 1 ? int.parse(parts[1]) : 0;
|
||
|
final hours = parts.length > 2 ? int.parse(parts[2]) : 0;
|
||
|
return Duration(hours: hours, minutes: minutes, seconds: seconds);
|
||
|
}
|
||
|
}
|