@burglekitt/gmt
Version:
Temporal-based date and time utilities with timezone support and polyfill integration
28 lines (27 loc) • 1.57 kB
TypeScript
/**
* Split a Unix epoch interval into sub-intervals of `amount × unit`.
*
* - Returns an array of `{ start, end }` records that tile the interval.
* - The final sub-interval is trimmed so its `end` never exceeds the original `end`.
* - Returns `[{ start, end }]` when `start === end` (zero-length interval).
* - Returns `[]` on invalid input (non-finite/non-integer start/end, unsupported unit,
* non-positive amount, or invalid timeZone).
*
* Uses the system timeZone for calendar-unit arithmetic (consistent with `addUnix`).
*
* @param start Unix epoch value (seconds or milliseconds) — interval start
* @param end Unix epoch value (seconds or milliseconds) — interval end
* @param unit duration unit string — any `DateTimeDurationUnit`
* @param amount positive number of units per step
* @returns array of `{ start, end }` records, or [] on invalid input
*
* @example splitIntervalByUnitUnix(0, 86400000, "hour", 6) // [{ start: 0, end: 21600000 }, { start: 21600000, end: 43200000 }, { start: 43200000, end: 64800000 }, { start: 64800000, end: 86400000 }]
* @example splitIntervalByUnitUnix(0, 3600000, "hour", 1) // [{ start: 0, end: 3600000 }]
* @example splitIntervalByUnitUnix(0, 0, "hour", 1) // [{ start: 0, end: 0 }]
* @example splitIntervalByUnitUnix(0, 86400000, "hour", 0) // []
* @example splitIntervalByUnitUnix("invalid", 86400000, "hour", 1) // []
*/
export declare function splitIntervalByUnitUnix(start: number | string, end: number | string, unit: string, amount: number): Array<{
start: number;
end: number;
}>;