vremel
Version:
JavaScript date utility library for Temporal API
28 lines (25 loc) • 759 B
text/typescript
import type { Temporal } from "../types.js";
/** @internal */
export function endOfTimeForZonedDateTime(
zdt: Temporal.ZonedDateTime,
withArg: Temporal.PlainDateTimeLike,
): Temporal.ZonedDateTime {
const [earlier, later] = (["earlier", "later"] as const).map(
(disambiguation) =>
zdt.with(withArg, {
offset: "ignore",
disambiguation,
}),
) as [Temporal.ZonedDateTime, Temporal.ZonedDateTime];
if (earlier.toPlainDateTime().equals(later.toPlainDateTime())) {
// backward transition or no transition
return later;
} else {
// forward transition
const transition = earlier.getTimeZoneTransition("next");
if (transition === null) {
throw new Error("Unknown error");
}
return transition.subtract({ nanoseconds: 1 });
}
}