parseDuration function

Duration parseDuration(
  1. String input
)

Parse a duration string into a Duration.

Supported formats: 500ms, 5s, 2m, 1h, 7d.

Throws FormatException if the input is not a valid duration string.

parseDuration('5s');    // Duration(seconds: 5)
parseDuration('500ms'); // Duration(milliseconds: 500)
parseDuration('abc');   // throws FormatException

Implementation

Duration parseDuration(String input) {
  final match = RegExp(r'^(\d+)(ms|s|m|h|d)$').firstMatch(input.trim());
  if (match == null) throw FormatException('Invalid duration: "$input"');
  final value = int.parse(match.group(1)!);
  return switch (match.group(2)) {
    'ms' => Duration(milliseconds: value),
    's' => Duration(seconds: value),
    'm' => Duration(minutes: value),
    'h' => Duration(hours: value),
    'd' => Duration(days: value),
    _ => throw FormatException('Invalid duration unit: ${match.group(2)}'),
  };
}