formatDateRange
Signature
Section titled “Signature”formatDateRange(start: string, end: string, locale?: string | string[], options?: DateTimeFormatOptions): stringFormat a plain date range using the Temporal Intl.DateTimeFormat formatRange API.
- Plain counterpart of
formatZonedRange— same parameter order and option shape. - Uses Temporal.PlainDate.from for both endpoints; no timezone is involved.
- Formats as Temporal’s ECMA-402 PlainDate format does, through the runtime’s
Intl.DateTimeFormat#formatRange:timeZoneNameis ignored, and atimeStylewithoutdateStyle, or only time fields, returns"". - Compatibility: before 1.16.0
timeZoneNamealone returned""; only that sentinel became a value. - Locale elides shared fields between
startandend(e.g. same month/year). - Returns "" for invalid input on either endpoint.
- Output is normalized: dash separators become ASCII ”-” (unspaced between digits, spaced otherwise), and no-break, narrow and thin spaces become U+0020.
optionsnull returns"", as ECMA-402’s CoerceOptionsToObject rejects it. Any other non-object — a string, a number, a boolean — formats with the defaults, asIntl.DateTimeFormatdoes: CoerceOptionsToObject calls ToObject on it and the wrapper carries no recognised option. Onlynullandundefinedare special-cased.
Parameters
Section titled “Parameters”| Parameter | Type | Description |
|---|---|---|
start | string | ISO PlainDate string (range start) |
end | string | ISO PlainDate string (range end) |
locale | string | string[] | optional locale tag (default: runtime default), or a preference list of tags (ECMA-402) |
Options
Section titled “Options”options
optional Intl.DateTimeFormatOptions
Type: DateTimeFormatOptions.
| Option | Type | Default | Description |
|---|---|---|---|
…Intl.DateTimeFormatOptions | — | — | Every field of DateTimeFormatOptions, as ECMA-402 defines it. |
Returns
Section titled “Returns”localized range string or "" when invalid
Related types
Section titled “Related types”Examples
Section titled “Examples”import { formatDateRange } from "@northguild/gmt/plain/format";
formatDateRange("2024-02-03", "2024-02-05", "en-US", { dateStyle: "long" }) // "February 3 - 5, 2024"