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