Function: crossesViewerMidnight()
crossesViewerMidnight(
dateISO,from,to,facilityTz,viewerTz):boolean
Defined in: src/lib/dates/tz.ts:202
Whether a facility-time from–to pair lands on two different calendar days in viewerTz.
A pair never crosses midnight in the facility's own zone (to > from is enforced by
timePairSchema), but it routinely does in a distant viewer's: a 09:00–17:00 shift in
America/New_York runs 9:00 PM → 5:00 AM the next day in Asia/Manila. Hours are always filed
under the facility business day (ADR-0027); this is what lets the UI say so out loud instead of
leaving the viewer to notice the mismatch against their own phone.
Parameters
dateISO
string
The facility business day the pair is filed under, as YYYY-MM-DD.
from
string
Pair start as 24-hour HH:MM, wall-clock in facilityTz.
to
string
Pair end as 24-hour HH:MM, wall-clock in facilityTz.
facilityTz
string
IANA timezone the wall times are expressed in (e.g. America/New_York).
viewerTz
string
IANA timezone to compare calendar days in (e.g. Asia/Manila).
Returns
boolean
true when start and end fall on different calendar days in viewerTz.
Throws
RangeError If either timezone is invalid or the date/time strings are unparseable.
Example
// A New York day shift spans two calendar days in Manila.
crossesViewerMidnight('2026-08-04', '09:00', '17:00', 'America/New_York', 'Asia/Manila'); // true