@burglekitt/gmt
Version:
Temporal-based date and time utilities with timezone support and polyfill integration
24 lines (23 loc) • 1.94 kB
TypeScript
import type { Disambiguation, Offset } from "../../types/index.js";
/**
* Return the start of the quarter for a Unix timestamp.
*
* - Converts to ZonedDateTime, calculates quarter start, converts back to epoch.
* - Q1 returns month 1, Q2 returns month 4, Q3 returns month 7, Q4 returns month 10.
* - `disambiguation` controls DST gap/overlap resolution when the quarter-start boundary lands on an ambiguous local time: "compatible" (default, matches Temporal's default), "earlier", "later", or "reject" (throws, resulting in null).
* - `offset` controls whether the source's existing UTC offset is kept when computing the new boundary: "prefer" (Temporal's own default — keeps the source offset whenever still valid, which **makes `disambiguation` inert** in the (rare) common-zone case since quarter boundaries don't fall on DST transitions), "use", "ignore" (**this function's default** — always recomputes from time zone + local time, discarding the stale offset), or "reject" (throws if the source offset is invalid for the new fields, independent of `disambiguation`). Leave `offset` at its default unless you specifically need Temporal's raw `.with()` semantics.
* - Returns null for invalid input.
*
* @param value Unix timestamp (number)
* @param options optional: epochUnit ("seconds" | "milliseconds"), timeZone (IANA), disambiguation ("compatible" | "earlier" | "later" | "reject"), offset ("prefer" | "use" | "ignore" | "reject", default "ignore")
* @returns Unix epoch number representing the start of the quarter, or null on invalid input
*
* @example startOfQuarterForUnix(1706659200000) // 1704067200000
* @example startOfQuarterForUnix(-86400000) // -25598400001 (Q1 1969 starts Jan 1)
*/
export declare function startOfQuarterForUnix(value: number, options?: {
epochUnit?: "seconds" | "milliseconds";
timeZone?: string;
disambiguation?: Disambiguation;
offset?: Offset;
}): number | null;