Function DateIsAWeekday(DateObject As DateTime) As Boolean
Return DateObject.DayOfWeek > 0 and DateObject.DayOfWeek < 6
Function DateIsBeforeNoon(DateObject As DateTime) As Boolean
Return DateObject.Hour < 12
Function AddWeekdays(DateObject as DateTime, DaysToAdd As Integer) As DateTime
Dim RemainingDaysToAdd As Integer = DaysToAdd
Dim NewDateObject As DateTime = DateObject
Do While RemainingDaysToAdd > 0
NewDateObject = NewDateObject.AddDays(1)
If(DateIsAWeekday(NewDateObject)) Then
RemainingDaysToAdd = RemainingDaysToAdd - 1
Dim OrderDateStrings = New String() {"9/5/2024 11:00", "9/5/2024 12:00", "9/6/2024 11:00", "9/6/2024 12:00", "9/7/2024 11:00", "9/7/2024 12:00", "9/8/2024 11:00", "9/8/2024 12:00", "9/9/2024 11:00", "9/9/2024 12:00", "9/10/2024 11:00", "9/10/2024 12:00"}
Dim ExpectedRequireDateStrings = New String() {"09/06/2024 11:00:00", "09/09/2024 12:00:00", "09/09/2024 11:00:00", "09/10/2024 12:00:00", "09/10/2024 11:00:00", "09/10/2024 12:00:00", "09/10/2024 11:00:00", "09/10/2024 12:00:00", "09/10/2024 11:00:00", "09/11/2024 12:00:00", "09/11/2024 11:00:00", "09/12/2024 12:00:00"}
For index = 0 To OrderDateStrings.GetUpperBound(0)
Dim OrderDate As DateTime = DateTime.Parse(OrderDateStrings(index))
Dim RequireDateExpected As DateTime = DateTime.Parse(ExpectedRequireDateStrings(index))
Dim OffsetDays As Integer = 2
If DateIsAWeekday(OrderDate) And DateIsBeforeNoon(OrderDate) Then
Dim RequireDate As DateTime = AddWeekdays(OrderDate, OffsetDays)
Console.WriteLine($"OrderDate: {OrderDate}")
Console.WriteLine($"OffsetDays: {OffsetDays}")
Console.WriteLine($"RequireDate: {RequireDate}")
Console.WriteLine($"RequireDateExpected: {RequireDateExpected}")
If RequireDateExpected.Equals(RequireDate) Then
Console.WriteLine("ERROR")