Skip to content

isRelativeDay

isRelativeDay(value: string, offsetDays: number): boolean
import { isRelativeDay } from "@northguild/gmt/plain/compare";

Return true when value falls offsetDays days from today, per the

  • system clock and system timeZone.
  • Subsumes isToday/isYesterday/isTomorrow: offsetDays: 0 is “today”, -1 is “yesterday”, 1 is “tomorrow”, and any other integer offset works the same way.
  • Compares against getToday(), so this depends on the system clock and system timeZone. The same call returns different answers on hosts in different timeZones at the same instant — a caller needing determinism (server-side rendering, tests, scheduled jobs) should use isZonedRelativeDay with an explicit timeZone, or compare against an explicit reference with areDatesEqualBy.
  • offsetDays must be an integer; non-integer or non-finite values return false.
  • Returns false if value is invalid or the system timeZone is unavailable. Mapping from date-fns (Decision 5, context/roadmap/issues/J.md):
  • isToday(value)isRelativeDay(value, 0)
  • isYesterday(value)isRelativeDay(value, -1)
  • isTomorrow(value)isRelativeDay(value, 1)
Parameter Type Description
value string ISO PlainDate string
offsetDays number integer number of days from today (0 = today, -1 = yesterday, 1 = tomorrow)

true if value is exactly offsetDays days from today, false on invalid input

isRelativeDay("2024-03-15", 0) // true, if today is 2024-03-15
isRelativeDay("2024-03-14", -1) // true, if today is 2024-03-15
isRelativeDay("2024-03-22", 7) // true, if today is 2024-03-15
isRelativeDay("2024-03-15", 1.5) // false (offsetDays must be an integer)
isRelativeDay("invalid", 0) // false

plain/compare/isRelativeDay.ts