withPrecision method
Round a resolved UTC instant using PostgreSQL TIMESTAMPTZ(p) rules.
Implementation
DateTime withPrecision(int digits) {
final utc = _checkedInstant(this);
final rounded = LocalDateTime(
LocalDate(utc.year, utc.month, utc.day),
LocalTime(
utc.hour,
utc.minute,
utc.second,
utc.millisecond * 1000 + utc.microsecond,
),
).withPrecision(digits);
final date = rounded.date, time = rounded.time;
return _checkedInstant(
DateTime.utc(
date.year,
date.month,
date.day,
time.hour,
time.minute,
time.second,
time.microsecond ~/ 1000,
time.microsecond % 1000,
),
);
}