@burglekitt/gmt
Version:
Temporal-based date and time utilities with timezone support and polyfill integration
37 lines (36 loc) • 1.68 kB
TypeScript
/**
* A single DST transition instant, with the UTC offset in effect immediately
* before and after the change.
*/
export interface DstTransition {
instant: string;
offsetBefore: string;
offsetAfter: string;
}
/**
* List every DST transition instant for an IANA timezone within a given year.
*
* - A "transition" is any UTC offset change: a spring-forward gap (nonexistent
* local time) or a fall-back overlap (ambiguous local time) — see
* `docs/dst-disambiguation.md` for the gap/overlap terminology. This is
* distinct from `hasDaylightSaving` (whether a zone observes DST at all)
* and from the `disambiguation`/`offset` options (what to do when
* constructing a single instant that lands in a gap/overlap).
* - Most zones have 0 or 2 transitions per year; some (e.g. `Africa/Casablanca`,
* which pauses DST for Ramadan) can have more.
* - Returns `[]` for an invalid timeZone, a non-integer year, or a valid zone
* with zero transitions in that year (not an error case).
*
* @param timeZone IANA timeZone identifier
* @param year calendar year to scan (must be an integer)
* @returns array of `{ instant, offsetBefore, offsetAfter }`, in chronological order
*
* @example getDstTransitions("America/New_York", 2024)
* // [
* // { instant: "2024-03-10T07:00:00Z", offsetBefore: "-05:00", offsetAfter: "-04:00" },
* // { instant: "2024-11-03T06:00:00Z", offsetBefore: "-04:00", offsetAfter: "-05:00" },
* // ]
* @example getDstTransitions("Asia/Tokyo", 2024) // []
* @example getDstTransitions("Invalid/Zone", 2024) // []
*/
export declare function getDstTransitions(timeZone: string, year: number): DstTransition[];