toLocal method

XPathDateTime toLocal()

Converts this date-time representation to local time.

Implementation

XPathDateTime toLocal() {
  final localOffsetMinutes = DateTime.now().timeZoneOffset.inMinutes;
  if (timezoneOffsetMinutes == localOffsetMinutes) return this;
  final utcDt = DateTime.utc(
    year ?? 1970,
    month ?? 1,
    day ?? 1,
    hour ?? 0,
    minute ?? 0,
    second ?? 0,
    millisecond,
    microsecond,
  );
  final adjusted = timezoneOffsetMinutes != null
      ? utcDt.subtract(Duration(minutes: timezoneOffsetMinutes!))
      : utcDt;
  final localDt = adjusted.add(Duration(minutes: localOffsetMinutes));
  return XPathDateTime.fromParts(
    year: year != null ? localDt.year : null,
    month: month != null ? localDt.month : null,
    day: day != null ? localDt.day : null,
    hour: hour != null ? localDt.hour : null,
    minute: minute != null ? localDt.minute : null,
    second: second != null ? localDt.second : null,
    millisecond: millisecond,
    microsecond: microsecond,
    timezoneOffsetMinutes: localOffsetMinutes,
    type: type,
  );
}