getHoursInZonedDay
Signature
Section titled “Signature”getHoursInZonedDay(value: string): number | nullReturn the number of hours in the calendar day a zoned datetime falls on.
- Accounts for DST transitions: a spring-forward day is 23 hours, a fall-back day is 25 hours, and a normal day is 24 hours. Zones whose DST shift isn’t a whole hour (e.g.
Australia/Lord_Howe’s 30-minute shift) return a fractional value instead, such as 23.5 or 24.5. - The calculation is based on the local calendar day of the input, not the UTC instant, and uses Temporal’s
hoursInDay: the span from that day’sstartOfDay()to the next day’s. A day whose local midnight is skipped (e.g.America/Santiagoon 2024-09-08, which starts at 01:00) is 23 hours. - The day is the input’s calendar date, so it can differ from the bucket
startOfZoned(…, "day")returns where a fall-back re-enters the previous date:America/Goose_Bayat2010-11-06T23:30:00-04:00is in 6 November’s 24 hours here, and in a reopened 59-minute day forstartOfZoned. - Returns null for invalid input.
Parameters
Section titled “Parameters”| Parameter | Type | Description |
|---|---|---|
value | string | zoned ISO 8601 datetime string |
Returns
Section titled “Returns”number of hours in the day (usually 23, 24, or 25; fractional for non-whole-hour DST shifts), or null on invalid input
Examples
Section titled “Examples”import { getHoursInZonedDay } from "@northguild/gmt/zoned/calculate";
getHoursInZonedDay("2024-03-10T12:00:00-04:00[America/New_York]") // 23