Meddelande

Minska
No announcement yet.

Loopa ut årets alla måndagar

Minska
X
 
  • Filter
  • Klockan
  • Show
Clear All
new posts

  • Loopa ut årets alla måndagar

    Hallå alla kodar genier.
    Hur gör man för att loopa ut alla årets ALLA måndagar och skriva ut datumet i en lista? Typ:

    Vill att det ska loopas ut så här:
    vecka 10 - 8 mars
    vecka 11 - 15 mars
    vecka 12 - 22 mars
    osv.

    eller kan man använda koden nedan och på något magiskt snyggt sätt hämta ut veckodatumet genom att bara använda veckonumret?

    Kod:
    For i = 1 to 52
    Response...
    Next
    There is no real life only AFK...

  • #2
    Det enda krångliga är att hålla reda på när första veckan startar. I Sverige är det den vecka som har minst 4 dagar på det nya året. 1-3 januari kan alltså vara v53. Efter det är det ju bara att addera 7 dagar i en loop.
    LiljaOnline

    Kommentera


    • #3
      ok, fattar fortfarande inte hur du menar. :/
      There is no real life only AFK...

      Kommentera


      • #4
        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.
        Kod:
        '----- 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
        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
        LiljaOnline

        Kommentera

        Working...
        X