Timestamp.fromTimestampString constructor

Timestamp.fromTimestampString(
  1. 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);
}