tryParse static method

Time? tryParse(
  1. String timeString
)

Parses a time string in the format "HH:mm" or "HH:mm:ss", returning null if invalid. The input is assumed to be in UTC. If timezone information is provided, it will be converted to UTC.

Example:

final utcTime = Time.tryParse('14:30:00');  // Parsed as UTC
final tzTime = Time.tryParse('14:30:00+02:00');  // Converted to UTC

Implementation

static Time? tryParse(String timeString) {
  final time = timeString.split(':');

  if (time.length < 2 || time.length > 3) {
    return null;
  }

  final time3 = time.length > 2 ? time[2] : null;

  return switch ((time[0], time[1], time3)) {
    (
      final String hour,
      final String minute,
      final String? second,
    ) =>
      switch ((
        int.tryParse(hour),
        int.tryParse(minute),
        second != null ? int.tryParse(second) : null,
      )) {
        (final int hour, final int minute, final int second)
            when _isValid(hour, minute, second) =>
          Time.fromValues(
            hour: hour,
            minute: minute,
            second: second,
          ),
        (final int hour, final int minute, final int second)
            when !_isValid(hour, minute, second) =>
          null,
        (final int hour, final int minute, _)
            when _isValid(hour, minute, 0) && time.length == 2 =>
          Time.fromValues(
            hour: hour,
            minute: minute,
          ),
        _ => null,
      },
  };
}