tryParse static method
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,
},
};
}