UNPKG

@burglekitt/gmt

Version:

Temporal-based date and time utilities with timezone support and polyfill integration

23 lines (22 loc) 1.37 kB
/** * Return the exact length of a UTC interval in `unit`, as a real (possibly fractional) number. * * - Distinct from `intervalCountUtc`, which counts calendar `unit` boundaries *crossed* rather * than measuring exact duration — an interval from 23:59 to 00:01 touches 2 day boundaries * via `intervalCountUtc` but has an exact length of ~0.0014 days via `intervalLengthUtc`. * - Boundaries are UTC boundaries — no DST is involved. * - Returns `0` for a zero-length interval (`start === end`). * - Returns `null` on invalid input (unparseable start/end, `start > end`, unsupported unit, * leap-second strings). * * @param start ISO UTC datetime string for the interval start * @param end ISO UTC datetime string for the interval end * @param unit unit string — any `DateTimeUnit` * @returns exact length of the interval expressed in `unit`, or null on invalid input * * @example intervalLengthUtc("2024-01-01T23:59:00Z", "2024-01-02T00:01:00Z", "day") // 0.001388888888888889 * @example intervalLengthUtc("2024-01-01T23:59:00Z", "2024-01-02T00:01:00Z", "minute") // 2 * @example intervalLengthUtc("2024-01-01T00:00:00Z", "2024-01-01T00:00:00Z", "day") // 0 * @example intervalLengthUtc("invalid", "2024-01-02T00:00:00Z", "day") // null */ export declare function intervalLengthUtc(start: string, end: string, unit: string): number | null;