withPrecision method

DateTime withPrecision(
  1. int digits
)

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,
    ),
  );
}