Timestamp.fromTimestampString constructor
- String str
Creates a Timestamp from an ISO 8601 string.
Parameters:
str: The timestamp string.
Returns: A Timestamp instance.
Example:
var ts = Timestamp.fromTimestampString('2021-01-01T00:00:00.000');
Implementation
factory Timestamp.fromTimestampString(String str) {
final regex = RegExp(r'^(\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2})(?:\.(\d{1,6}))?$');
final match = regex.firstMatch(str);
if (match == null) {
throw Exception(OracledbErrorMessages.format(OracledbErrorMessages.invalidTimestampString, [str]));
}
final base = match.group(1)!;
String fraction = match.group(2) ?? "0";
// Pad to 6 digits (microseconds precision)
fraction = fraction.padRight(6, "0");
final millis = int.parse(fraction.substring(0, 3));
final micros = int.parse(fraction.substring(3, 6));
// Build Date in UTC using only milliseconds
final date = DateTime.parse("${base}.${millis.toString().padLeft(3, '0')}Z");
final seconds = date.millisecondsSinceEpoch ~/ 1000;
final nanoseconds = millis * 1000000 + micros * 1000;
return Timestamp(seconds, nanoseconds);
}