Calculating the Next Working Day in .NET
Sometimes you don't just want to add a certain number of days to a date; you want to take working days into account: five working days until delivery, or two working days in which the customer needs a response.
Difficult? Not at all. The following nifty AddWorkingDays function does it all for you. Simply pass in a date, along with the number of working days you want to shift the date by. For example, pass in a 5 to get the fifth working day after your date, or "-1" to return the last working day.
Here's the code you'll need:
Public Function AddWorkingDays(ByVal DateIn As DateTime, _ ByVal ShiftDate As Integer) As DateTime ' Adds the [ShiftDate] number of working days to DateIn Dim datDate As DateTime = DateIn.AddDays(ShiftDate) ' Loop around until we get the need non-weekend day While Weekday(datDate) = 1 Or Weekday(datDate) = 7 datDate = datDate.AddDays(IIf(ShiftDate < 0, -1, 1)) End While Return datDate End Function
And here's how you might call it in your application:
Dim datNewDate As DateTime = AddWorkingDays(Today, -1) MessageBox.Show("The last working day was " & datNewDate)
About the Author
Karl Moore (MCSD, MVP) is an experience author living in Yorkshire, England. He is author of numerous technology books, including the new Ultimate VB .NET and ASP.NET Code Book (ISBN 1-59059-106-2, $49.99), plus regularly features at industry conferences and on BBC radio. Moore also runs his own creative consultancy, White Cliff Computing Ltd. Visit his official Web site at www.karlmoore.com.