toIso method
This method returns a String value from the IsoDuration object in
ISO 8601 - Duration (PnYnMnDTnHnMnS
format).
If any part is zero then it is omitted. If all parts are zero then it
returns PT0S
.
Decimal is separated with a dot.
Example:
final dur = IsoDuration(hours: 1, minutes: 2, seconds: 5.5);
dur.toIso(); // 'PT1H2M5.5S'
See also:
Implementation
String toIso() {
if (isZero) {
return 'PT0S';
}
final strNegative = isNegative ? '-' : '';
final strBuffer = StringBuffer('${strNegative}P');
if (years != 0) strBuffer.write('${years.plus().delTrailingZero()}Y');
if (months != 0) strBuffer.write('${months.plus().delTrailingZero()}M');
if (weeks != 0) strBuffer.write('${weeks.plus().delTrailingZero()}W');
if (days != 0) strBuffer.write('${days.plus().delTrailingZero()}D');
if (<double>[hours, minutes, seconds].any((e) => e != 0)) {
strBuffer.write('T');
if (hours != 0) strBuffer.write('${hours.plus().delTrailingZero()}H');
if (minutes != 0) strBuffer.write('${minutes.plus().delTrailingZero()}M');
if (seconds != 0) strBuffer.write('${seconds.plus().delTrailingZero()}S');
}
return strBuffer.toString();
}