offsetFor method
Implementation
NamedZoneOffset offsetFor(HasInstant instant) {
var namedStdOffset =
NamedZoneOffset.fromZoneOffset(stdName, false, stdOffset);
if (dstName == null) {
return namedStdOffset;
}
var namedDstOffset =
NamedZoneOffset.fromZoneOffset(dstName!, true, dstOffset!);
var std = OffsetDateTime.fromInstant(instant, stdOffset).toLocal();
var dst = OffsetDateTime.fromInstant(instant, dstOffset!).toLocal();
var dstStart = dstStartRule!.forYear(std.year);
var stdStart = stdStartRule!.forYear(std.year);
if (dstStart < stdStart) {
if (std >= dstStart && dst < stdStart) {
return namedDstOffset;
} else {
return namedStdOffset;
}
} else {
// "Winter time." Hello, Ireland. :-)
if (std >= stdStart && dst < dstStart) {
return namedStdOffset;
} else {
return namedDstOffset;
}
}
}