Time.parse constructor
Parses s
to Time.
Implementation
factory Time.parse(String s, {bool allowFromBytes = true}) {
s = s.trim();
if (s.isEmpty) {
throw FormatException('Invalid `Time` format: $s');
}
var idx1 = s.indexOf(':');
var idx2 = s.indexOf('.');
if (idx1 != 2 || (idx2 > 0 && idx2 < idx1)) {
if (allowFromBytes) {
var bs = _string2bytes(s);
return Time.fromBytes(bs, allowParseString: false);
}
throw FormatException('Invalid `Time` format: $s');
}
int ms = 0;
int mic = 0;
String hmsStr;
if (idx2 >= 0) {
hmsStr = s.substring(0, idx2).trim();
var msMicStr = s.substring(idx2 + 1).trim();
if (msMicStr.length <= 3) {
ms = int.parse(msMicStr);
} else {
var msEnd = msMicStr.length - 3;
var msStr = msMicStr.substring(0, msEnd);
var micStr = msMicStr.substring(msEnd);
ms = int.parse(msStr);
mic = int.parse(micStr);
}
} else {
hmsStr = s;
}
var parts = hmsStr.split(':');
var hStr = parts[0].trim();
var mStr = (parts.length > 1 ? parts[1] : '0').trim();
var secStr = (parts.length > 2 ? parts[2] : '0').trim();
var h = int.parse(hStr);
var m = int.parse(mStr);
var sec = int.parse(secStr);
return Time(h, m, sec, ms, mic);
}