DisambiguationA Disambiguation is used to resolve ambiguities when a DateTime is
ambiguous, such as during a daylight saving time transition.
Details
For more information, see the Temporal documentation
-
"compatible": (default) Behavior matching Temporal API and legacy JavaScript Date and moment.js. For repeated times, chooses the earlier occurrence. For gap times, chooses the later interpretation. -
"earlier": For repeated times, always choose the earlier occurrence. For gap times, choose the time before the gap. -
"later": For repeated times, always choose the later occurrence. For gap times, choose the time after the gap. -
"reject": Throw anRangeErrorwhen encountering ambiguous or non-existent times.
Example (Resolving ambiguous local times)
import { DateTime } from "effect"
// Fall-back example: 01:30 on Nov 2, 2025 in New York happens twice
const ambiguousTime = { year: 2025, month: 11, day: 2, hours: 1, minutes: 30 }
const timeZone = DateTime.zoneMakeNamedUnsafe("America/New_York")
DateTime.makeZoned(ambiguousTime, {
timeZone,
adjustForTimeZone: true,
disambiguation: "earlier"
})
// Earlier occurrence (DST time): 2025-11-02T05:30:00.000Z
DateTime.makeZoned(ambiguousTime, {
timeZone,
adjustForTimeZone: true,
disambiguation: "later"
})
// Later occurrence (standard time): 2025-11-02T06:30:00.000Z
// Gap example: 02:30 on Mar 9, 2025 in New York doesn't exist
const gapTime = { year: 2025, month: 3, day: 9, hours: 2, minutes: 30 }
DateTime.makeZoned(gapTime, {
timeZone,
adjustForTimeZone: true,
disambiguation: "earlier"
})
// Time before gap: 2025-03-09T06:30:00.000Z (01:30 EST)
DateTime.makeZoned(gapTime, {
timeZone,
adjustForTimeZone: true,
disambiguation: "later"
})
// Time after gap: 2025-03-09T07:30:00.000Z (03:30 EDT)export type type Disambiguation =
| "compatible"
| "earlier"
| "later"
| "reject"
A Disambiguation is used to resolve ambiguities when a DateTime is
ambiguous, such as during a daylight saving time transition.
Details
For more information, see the Temporal documentation
-
"compatible": (default) Behavior matching Temporal API and legacy JavaScript Date and moment.js.
For repeated times, chooses the earlier occurrence. For gap times, chooses the later interpretation.
-
"earlier": For repeated times, always choose the earlier occurrence.
For gap times, choose the time before the gap.
-
"later": For repeated times, always choose the later occurrence.
For gap times, choose the time after the gap.
-
"reject": Throw an RangeError when encountering ambiguous or non-existent times.
Example (Resolving ambiguous local times)
import { DateTime } from "effect"
// Fall-back example: 01:30 on Nov 2, 2025 in New York happens twice
const ambiguousTime = { year: 2025, month: 11, day: 2, hours: 1, minutes: 30 }
const timeZone = DateTime.zoneMakeNamedUnsafe("America/New_York")
DateTime.makeZoned(ambiguousTime, {
timeZone,
adjustForTimeZone: true,
disambiguation: "earlier"
})
// Earlier occurrence (DST time): 2025-11-02T05:30:00.000Z
DateTime.makeZoned(ambiguousTime, {
timeZone,
adjustForTimeZone: true,
disambiguation: "later"
})
// Later occurrence (standard time): 2025-11-02T06:30:00.000Z
// Gap example: 02:30 on Mar 9, 2025 in New York doesn't exist
const gapTime = { year: 2025, month: 3, day: 9, hours: 2, minutes: 30 }
DateTime.makeZoned(gapTime, {
timeZone,
adjustForTimeZone: true,
disambiguation: "earlier"
})
// Time before gap: 2025-03-09T06:30:00.000Z (01:30 EST)
DateTime.makeZoned(gapTime, {
timeZone,
adjustForTimeZone: true,
disambiguation: "later"
})
// Time after gap: 2025-03-09T07:30:00.000Z (03:30 EDT)
Disambiguation = "compatible" | "earlier" | "later" | "reject"