Skip to content

addBusinessDays

addBusinessDays(value: string, amount: number, calendar?: BusinessCalendar): string

Return a PlainDate ISO string with amount working days added to value.

  • calendar names the weekend days and holidays to skip. Omit it and GMT keeps its original fixed Monday–Friday week with no holidays. Pass one anywhere the weekend is not Saturday–Sunday — much of the Middle East is Friday–Saturday.
  • Negative amount walks backwards, so addBusinessDays(value, -3, cal) and subtractBusinessDays(value, 3, cal) agree.
  • amount of 0 returns value unchanged — including when value is not itself a working day. Use rollDate to move a non-working day onto one.
  • value is never counted, so adding 1 from a holiday lands on the next working day after it.
  • value and calendar.holidays are local dates; calendar.timeZone is not read. A caller holding an instant reduces it to a local date first, with floorToZone.
  • Returns "" on invalid input — including a fractional amount, which names no whole number of working days — on an invalid calendar, and when the walk runs past 200,000 calendar days (about 547 years) without finishing.
ParameterTypeDescription
valuestringISO PlainDate string
amountnumberwhole number of working days to add; negative walks backwards
calendarBusinessCalendaroptional BusinessCalendar; defaults to Monday–Friday with no holidays

ISO PlainDate string after adding working days, or "" on invalid input

import { addBusinessDays } from "@northguild/gmt/plain/calculate";
addBusinessDays("2024-03-15", 1) // "2024-03-18" (Friday to Monday)
output 

plain/calculate/addBusinessDays.ts