Hmm, krångligt att förklara så jag tar några exempel. Måndag vecka 1 och januari 2013 har datumet 31 december. Måndag vecka 1 under 2009 var den 29 december. Första måndagen 2009 tillhör därför vecka 2.
Alltså, vill du ha med måndag vecka 1 eller vill du ibland börja på vecka 2 eftersom första måndagen på året ibland är vecka 2?
Här kommer en kodsnutt som skriver ut datumet för alla veckornas måndagar ett visst år.
'----- If january 1st is first week
If DatePart("ww", currentDate, vbMonday, vbFirstFourDays) = 1 Then
'----- Yes, loop backwards until we reach the monday of that week
While DatePart("w", currentDate, vbMonday, vbFirstFourDays) <> 1
currentDate = DateAdd("d", -1, currentDate)
Wend
Else
'----- No, loop forward until we reach the monday of the next week (first week)
While DatePart("w", currentDate, vbMonday, vbFirstFourDays) <> 1
currentDate = DateAdd("d", 1, currentDate)
Wend
End If
'----- Loop weeks until new year
lastWeek = 0
While lastWeek < DatePart("ww", currentDate, vbMonday, vbFirstFourDays)
lastWeek = DatePart("ww", currentDate, vbMonday, vbFirstFourDays)
Response.Write("vecka " & DatePart("ww", currentDate, vbMonday, vbFirstFourDays) & " - " & Day(currentDate) & " " & MonthName(Month(currentDate), False) & "<br />")
currentDate = DateAdd("ww", 1, currentDate)
Wend
Ex (2009):
vecka 1 - 29 december
vecka 2 - 5 januari
vecka 3 - 12 januari
vecka 4 - 19 januari
Om du bara vill ha årets dagar blir det något enklare kod
'----- Loop forward until we reach the monday of the next week (first week)
While DatePart("w", currentDate, vbMonday, vbFirstFourDays) <> 1
currentDate = DateAdd("d", 1, currentDate)
Wend
'----- Loop weeks until new year
lastWeek = 0
While lastWeek < DatePart("ww", currentDate, vbMonday, vbFirstFourDays)
lastWeek = DatePart("ww", currentDate, vbMonday, vbFirstFourDays)
Response.Write("vecka " & DatePart("ww", currentDate, vbMonday, vbFirstFourDays) & " - " & Day(currentDate) & " " & MonthName(Month(currentDate), False) & "<br />")
currentDate = DateAdd("ww", 1, currentDate)
Wend
Ex (2009):
vecka 2 - 5 januari
vecka 3 - 12 januari
vecka 4 - 19 januari
vecka 5 - 26 januari