addBusinessDays method
Adds the specified number of business days.
final h = Hora.of(year: 2023, month: 12, day: 22); // Friday
final result = h.addBusinessDays(3); // Wednesday (skips Sat, Sun)
Implementation
Hora addBusinessDays(
int days, [
BusinessDayConfig config = BusinessDayConfig.standard,
]) {
_requireValidBusinessDate(this, 'addBusinessDays');
_validateTraversalConfig(config, method: 'addBusinessDays');
if (days == 0) return this;
var current = this;
var remaining = days.abs();
final direction = days.isNegative ? -1 : 1;
var iterations = 0;
final maxIterations = days.abs() * 20 + _maxBusinessDaySearchIterations;
while (remaining > 0) {
current = direction > 0
? current.add(1, TemporalUnit.day)
: current.subtract(1, TemporalUnit.day);
iterations++;
if (iterations > maxIterations) {
throw StateError(
'addBusinessDays() exceeded search guard ($maxIterations steps). '
'Check weekend/holiday configuration.',
);
}
if (current.isBusinessDay(config)) {
remaining--;
}
}
return current;
}