Tweak Duration.toString to be more web-friendly

Change-Id: I588e089124d5c2fc62caa19cc2206c81666d6e8e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/213183
Reviewed-by: Lasse R.H. Nielsen <lrn@google.com>
Commit-Queue: Stephen Adams <sra@google.com>
This commit is contained in:
Stephen Adams 2021-09-13 18:19:00 +00:00 committed by commit-bot@chromium.org
parent 8c9dcc92f5
commit 089bebcae7

View file

@ -261,35 +261,27 @@ class Duration implements Comparable<Duration> {
/// d.toString(); // "1:10:00.000500"
/// ```
String toString() {
var buffer = List<String>.filled(9, "");
var microseconds = inMicroseconds;
var hours = microseconds ~/ microsecondsPerHour;
microseconds = microseconds.remainder(microsecondsPerHour);
if (microseconds < 0) microseconds = -microseconds;
var hoursString = hours.toString();
buffer
..[0] = hoursString
..[1] = ":";
var minutes = microseconds ~/ microsecondsPerMinute;
microseconds = microseconds.remainder(microsecondsPerMinute);
if (minutes < 10) buffer[2] = "0";
buffer
..[3] = minutes.toString()
..[4] = ":";
var minutesPadding = minutes < 10 ? "0" : "";
var seconds = microseconds ~/ microsecondsPerSecond;
microseconds = microseconds.remainder(microsecondsPerSecond);
if (seconds < 10) buffer[5] = "0";
buffer
..[6] = seconds.toString()
..[7] = "."
..[8] = microseconds.toString().padLeft(6, "0");
return buffer.join("");
var secondsPadding = seconds < 10 ? "0" : "";
var paddedMicroseconds = microseconds.toString().padLeft(6, "0");
return "$hours:"
"$minutesPadding$minutes:"
"$secondsPadding$seconds.$paddedMicroseconds";
}
/// Whether this [Duration] is negative.