duration_iso_parser 0.2.0
duration_iso_parser: ^0.2.0 copied to clipboard
Package to parse a duration from ISO 8601 string (like P1M, PT15M, P2Y3W4DT5H).
// ignore_for_file: avoid_print
import 'package:duration_iso_parser/duration_iso_parser.dart';
void main() {
const parser = DurationParser();
final p2w = parser.parseIsoString('P2W');
print(p2w); // CalendarDuration(days: 14)
print(p2w.resolve(DateTime(2025, 12, 25))); // 2026-01-08 00:00:00.000
print(p2w.toApproximateDuration()); // 336:00:00.000000
final p1y2m4d = parser.parseIsoString('P1Y2M4D');
print(p1y2m4d); // CalendarDuration(years: 1, months: 2, days: 4)
print(p1y2m4d.resolve(DateTime(2025, 12, 25))); // 2027-03-01 00:00:00.000
print(p1y2m4d.toApproximateDuration()); // 10296:00:00.000000
final p2dt11h = parser.parseIsoString('P2DT11H');
print(p2dt11h); // CalendarDuration(days: 2, hours: 11)
print(p2dt11h.resolve(DateTime(2025, 12, 25))); // 2025-12-27 11:00:00.000
print(p2dt11h.toApproximateDuration()); // 59:00:00.000000
final p1wt10s = parser.parseIsoString('P1WT10S');
print(p1wt10s); // CalendarDuration(days: 7, seconds: 10)
print(p1wt10s.resolve(DateTime(2025, 12, 25))); // 2026-01-01 00:00:10.000
print(p1wt10s.toApproximateDuration()); // 168:00:10.000000
final pt5m = parser.parseIsoString('PT5M');
print(pt5m); // CalendarDuration(minutes: 5)
print(pt5m.resolve(DateTime(2025, 12, 25))); // 2025-12-25 00:05:00.000
print(pt5m.toApproximateDuration()); // 0:05:00.000000
}