(
zoneId: string,
options?: {
readonly adjustForTimeZone?: boolean | undefined
readonly disambiguation?: Disambiguation | undefined
}
): (self: DateTime) => Zoned
(
self: DateTime,
zoneId: string,
options?: {
readonly adjustForTimeZone?: boolean | undefined
readonly disambiguation?: Disambiguation | undefined
}
): ZonedSets the time zone of a DateTime from an IANA time zone identifier. If the
time zone is invalid, an IllegalArgumentError will be thrown.
Example (Setting named time zones unsafely)
import { DateTime, Effect } from "effect"
Effect.gen(function*() {
const now = yield* DateTime.now
// set the time zone
DateTime.setZoneNamedUnsafe(now, "Europe/London")
})export const const setZoneNamedUnsafe: {
(
zoneId: string,
options?: {
readonly adjustForTimeZone?:
| boolean
| undefined
readonly disambiguation?:
| Disambiguation
| undefined
}
): (self: DateTime) => Zoned
(
self: DateTime,
zoneId: string,
options?: {
readonly adjustForTimeZone?:
| boolean
| undefined
readonly disambiguation?:
| Disambiguation
| undefined
}
): Zoned
}
Sets the time zone of a DateTime from an IANA time zone identifier. If the
time zone is invalid, an IllegalArgumentError will be thrown.
Example (Setting named time zones unsafely)
import { DateTime, Effect } from "effect"
Effect.gen(function*() {
const now = yield* DateTime.now
// set the time zone
DateTime.setZoneNamedUnsafe(now, "Europe/London")
})
setZoneNamedUnsafe: {
(zoneId: stringzoneId: string, options: {
readonly adjustForTimeZone?: boolean | undefined
readonly disambiguation?:
| Disambiguation
| undefined
}
options?: {
readonly adjustForTimeZone?: boolean | undefinedadjustForTimeZone?: boolean | undefined
readonly disambiguation?: Disambiguation | undefineddisambiguation?: 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 | undefined
}): (self: DateTimeself: type DateTime = Utc | ZonedA DateTime represents a point in time. It can optionally have a time zone
associated with it.
Companion namespace containing the public helper types used by DateTime
constructors, parts APIs, formatting, and date/time arithmetic.
DateTime) => Zoned
(self: DateTimeself: type DateTime = Utc | ZonedA DateTime represents a point in time. It can optionally have a time zone
associated with it.
Companion namespace containing the public helper types used by DateTime
constructors, parts APIs, formatting, and date/time arithmetic.
DateTime, zoneId: stringzoneId: string, options: {
readonly adjustForTimeZone?: boolean | undefined
readonly disambiguation?:
| Disambiguation
| undefined
}
options?: {
readonly adjustForTimeZone?: boolean | undefinedadjustForTimeZone?: boolean | undefined
readonly disambiguation?: Disambiguation | undefineddisambiguation?: 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 | undefined
}): Zoned
} = import InternalInternal.const setZoneNamedUnsafe: {
(
zoneId: string,
options?: {
readonly adjustForTimeZone?:
| boolean
| undefined
readonly disambiguation?:
| DateTime.Disambiguation
| undefined
}
): (self: DateTime.DateTime) => DateTime.Zoned
(
self: DateTime.DateTime,
zoneId: string,
options?: {
readonly adjustForTimeZone?:
| boolean
| undefined
readonly disambiguation?:
| DateTime.Disambiguation
| undefined
}
): DateTime.Zoned
}
setZoneNamedUnsafe