(
input: DateTime.Input,
options?: {
readonly timeZone?: number | string | TimeZone | undefined
readonly adjustForTimeZone?: boolean | undefined
readonly disambiguation?: Disambiguation | undefined
}
): Option.Option<Zoned>Creates a DateTime.Zoned safely from an input and a time zone.
Details
By default, the input is interpreted as a UTC instant and the time zone is
attached without changing that instant. When adjustForTimeZone is true,
the input is interpreted as wall-clock time in the target zone.
When adjustForTimeZone is true, disambiguation controls
daylight-saving gaps and repeated times:
"compatible"(default): chooses the earlier occurrence for repeated times and the later interpretation for gaps"earlier": chooses the earlier possible instant"later": chooses the later possible instant"reject": rejects ambiguous or nonexistent wall-clock times
Returns Some when construction succeeds, or None when the input, time
zone, or disambiguation cannot be resolved.
Example (Creating optional zoned DateTime values)
import { DateTime } from "effect"
const result = DateTime.makeZoned("2024-06-15T14:30:00Z", {
timeZone: "Europe/London"
})
console.log(result._tag) // "Some"
if (result._tag === "Some") {
console.log(DateTime.formatIsoZoned(result.value)) // "2024-06-15T15:30:00.000+01:00[Europe/London]"
}export const const makeZoned: (
input: DateTime.Input,
options?: {
readonly timeZone?:
| number
| string
| TimeZone
| undefined
readonly adjustForTimeZone?:
| boolean
| undefined
readonly disambiguation?:
| Disambiguation
| undefined
}
) => Option.Option<Zoned>
Creates a DateTime.Zoned safely from an input and a time zone.
Details
By default, the input is interpreted as a UTC instant and the time zone is
attached without changing that instant. When adjustForTimeZone is true,
the input is interpreted as wall-clock time in the target zone.
When adjustForTimeZone is true, disambiguation controls
daylight-saving gaps and repeated times:
"compatible" (default): chooses the earlier occurrence for repeated
times and the later interpretation for gaps
"earlier": chooses the earlier possible instant
"later": chooses the later possible instant
"reject": rejects ambiguous or nonexistent wall-clock times
Returns Some when construction succeeds, or None when the input, time
zone, or disambiguation cannot be resolved.
Example (Creating optional zoned DateTime values)
import { DateTime } from "effect"
const result = DateTime.makeZoned("2024-06-15T14:30:00Z", {
timeZone: "Europe/London"
})
console.log(result._tag) // "Some"
if (result._tag === "Some") {
console.log(DateTime.formatIsoZoned(result.value)) // "2024-06-15T15:30:00.000+01:00[Europe/London]"
}
makeZoned: (
input: DateTime.Inputinput: DateTime.type DateTime.Input = string | number | DateTime | Partial<DateTime.Parts> | DateTime.Instant | DateTime.InstantWithZone | DateInput accepted by DateTime.make, DateTime.makeUnsafe, and the zoned
constructors.
Details
Includes existing DateTime values, partial date parts, epoch-millisecond
objects, epoch milliseconds, JavaScript Date instances, and parseable date
strings.
Input,
options: {
readonly timeZone?:
| number
| string
| TimeZone
| undefined
readonly adjustForTimeZone?: boolean | undefined
readonly disambiguation?:
| Disambiguation
| undefined
}
options?: {
readonly timeZone?: number | string | TimeZone | undefinedtimeZone?: number | string | type TimeZone = TimeZone.Offset | TimeZone.NamedRepresents a time zone used by DateTime.Zoned.
Details
A TimeZone is either a fixed offset from UTC or a named IANA time zone.
Companion namespace containing the public variant and protocol types for
TimeZone.
TimeZone | undefined
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
}
) => import OptionOption.type Option<A> = Option.None<A> | Option.Some<A>The Option data type represents optional values. An Option<A> is either
Some<A>, containing a value of type A, or None, representing absence.
When to use
Use to represent initial values that may not yet exist
- Returning from partial functions (not defined for all inputs)
- Managing optional fields in data structures
Namespace containing utility types for Option.
When to use
Use to access type-level helpers associated with Option.
Option<Zoned> = import InternalInternal.const makeZoned: (
input: DateTime.DateTime.Input,
options?: {
readonly timeZone?:
| number
| string
| DateTime.TimeZone
| undefined
readonly adjustForTimeZone?:
| boolean
| undefined
readonly disambiguation?:
| DateTime.Disambiguation
| undefined
}
) => Option.Option<DateTime.Zoned>
makeZoned