parse static method
Parses HH:mm, HH:mm:ss, or HH:mm:ss.fffffff.
Fractional seconds accept 1..7 digits and are right-padded to SQL Server
time(7) 100ns precision.
Implementation
static FdcTime parse(String text) {
final trimmed = text.trim();
final match = RegExp(
r'^(\d{1,2}):(\d{2})(?::(\d{2})(?:\.(\d{1,7}))?)?$',
).firstMatch(trimmed);
if (match == null) {
throw FormatException('Invalid FdcTime value.', text);
}
final hour = int.parse(match.group(1)!);
final minute = int.parse(match.group(2)!);
final second = int.parse(match.group(3) ?? '0');
final fractionText = (match.group(4) ?? '').padRight(7, '0');
final fractionTicks = fractionText.isEmpty ? 0 : int.parse(fractionText);
_checkRange(hour, 0, 23, 'hour');
_checkRange(minute, 0, 59, 'minute');
_checkRange(second, 0, 59, 'second');
return FdcTime._(
hour * ticksPerHour +
minute * ticksPerMinute +
second * ticksPerSecond +
fractionTicks,
);
}