BoltonWanderer
asked on
VB.NET Week Day Dates
Hello,
I am trying to get an array of dates for a given month.
For example, the user enters the month they want e.g. September 2012.
I then need to find the first and last date of that month. (Done that)
Then I need to get the dates for each week in that month.
So it will be formatted like the below.
3 September 2012 - 7 September 2012
10 September 2012 - 14 September 2012
17 September 2012 - 21 September 2012
21 September 2012 - 28 September 2012
I need the first date it gets to start on the first week day for that month so ignoring Saturday and Sunday.
I need it to finish on the very last date of that month but during the week.
Another example would be for August 2012
1 August 2012 - 3 August 2012
6 August 2012 - 10 August 2012
13 August 2012 - 17 August 2012
20 August 2012 - 24 August 2012
27 August 2012 - 31 August 2012
I have currently got a loop which is like the below.
Which does report correctly to an extent however it is also bringing in October dates where as I only want September.
The results I get from the above is
03 September 2012 - 07 September 2012
10 September 2012 - 14 September 2012
17 September 2012 - 21 September 2012
24 September 2012 - 28 September 2012
01 October 2012 - 05 October 2012
08 October 2012 - 12 October 2012
15 October 2012 - 19 October 2012
22 October 2012 - 26 October 2012
29 October 2012 - 31 October 2012
Any help in trying to solve this would be great please.
Thanks,
I am trying to get an array of dates for a given month.
For example, the user enters the month they want e.g. September 2012.
I then need to find the first and last date of that month. (Done that)
Then I need to get the dates for each week in that month.
So it will be formatted like the below.
3 September 2012 - 7 September 2012
10 September 2012 - 14 September 2012
17 September 2012 - 21 September 2012
21 September 2012 - 28 September 2012
I need the first date it gets to start on the first week day for that month so ignoring Saturday and Sunday.
I need it to finish on the very last date of that month but during the week.
Another example would be for August 2012
1 August 2012 - 3 August 2012
6 August 2012 - 10 August 2012
13 August 2012 - 17 August 2012
20 August 2012 - 24 August 2012
27 August 2012 - 31 August 2012
I have currently got a loop which is like the below.
Do While blStop = False
' TextBox1.Text &= dtestart.ToLongDateString & vbNewLine
If dtestart.Month <> dtestart.AddDays(x).Month Then
' MsgBox("Month has changed")
arrDates(TheCounter) = dtestart & " - " & dtestart.AddDays(x - 1)
TheCounter += 1
ReDim Preserve arrDates(TheCounter)
blStop = True
Else
If dtestart.AddDays(x).DayOfWeek = DayOfWeek.Friday Then
arrDates(TheCounter) = dtestart & " - " & dtestart.AddDays(x)
TheCounter += 1
ReDim Preserve arrDates(TheCounter)
dtestart = dtestart.AddDays(x + 3)
x = 0
ElseIf dtestart.AddDays(x).DayOfWeek = DayOfWeek.Monday Then
' dtestart = dtestart.AddDays(x)
x = 0
ElseIf dtestart.AddDays(x).DayOfWeek = DayOfWeek.Saturday Or dtestart.AddDays(x).DayOfWeek = DayOfWeek.Sunday Then
x += 1
End If
End If
x += 1
Loop
Which does report correctly to an extent however it is also bringing in October dates where as I only want September.
The results I get from the above is
03 September 2012 - 07 September 2012
10 September 2012 - 14 September 2012
17 September 2012 - 21 September 2012
24 September 2012 - 28 September 2012
01 October 2012 - 05 October 2012
08 October 2012 - 12 October 2012
15 October 2012 - 19 October 2012
22 October 2012 - 26 October 2012
29 October 2012 - 31 October 2012
Any help in trying to solve this would be great please.
Thanks,
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Worked perfectky. Thank you.
dtestart = dtestart.AddDays(x + 3)
If that changes destart to the next month it will continue.
Probably the easiest way to fix it would just be to check if dtestart and dtestart.AddDays(x + 3) were the same month first and stop the loop in that case.