datetime/sla_calculator_utils library
SLA / due-date calculator over business hours + holidays — roadmap #595.
Answers "when is this due if it must be done within N working hours?" and "how much working time elapsed between these two instants?", counting only time inside a weekly BusinessHours schedule and skipping holidays from an optional BusinessCalendar. Reuses the holiday-aware calendar (#593) for the day-level skip and layers time-of-day open windows on top.
Open windows are half-open [open, close) and times are compared in the
instant's own zone; all date stepping uses calendar fields (not Duration)
so it never drifts across a DST boundary.
Classes
- BusinessHours
-
A weekly schedule of open windows keyed by
DateTime.weekday(Mon = 1 … Sun = 7). A weekday with no entry is fully closed. - OpenWindow
-
A single open period within a day, expressed as minutes from midnight:
[startMinute, endMinute).09:00–17:00isOpenWindow(540, 1020). - SlaCalculator
- Computes deadlines and elapsed working time against a BusinessHours schedule, optionally skipping holidays from a BusinessCalendar.