public virtual DateTime? Add(DateTime start, TimeSpan offset, SeekBoundaryMode seekBoundaryMode = SeekBoundaryMode.Next) {
if(IsDebugEnabled)
log.Debug("Start 시각[{0}] - Duration[{1}]의 시각을 계산합니다.... SeekBoundaryMode=[{2}]", start, offset, seekBoundaryMode);
if(IncludePeriods.Count == 0 && ExcludePeriods.Count == 0)
return start.Add(offset);
TimeSpan? remaining;
var end = offset < TimeSpan.Zero
? CalculateEnd(start, offset.Negate(), SeekDirection.Backward, seekBoundaryMode, out remaining)
: CalculateEnd(start, offset, SeekDirection.Forward, seekBoundaryMode, out remaining);
if(IsDebugEnabled)
log.Debug("Start 시각[{0}] - Duration[{1}]의 시각 End=[{2}], remaining=[{3}] 입니다!!! SeekBoundaryMode=[{4}]",
start, offset, end, remaining, seekBoundaryMode);
return end;
}