<% 'Den første dag i indeværende uge: Function getDate(ByVal weekNr, ByVal startDate) If Not isDate(startDate) Then Exit Function dato = CDate(startDate) Do While DatePart("ww", dato, vbMonday, vbFirstFourDays) <> weekNr dato = DateAdd("d", 1, dato) Loop getDate = dato End Function 'find uge nummer Function weekNr (dtmDate) ' Week Of Year weekNr = DatePart("ww", dtmDate, vbMonday, vbFirstFourDays) If weekNr > 52 Then If DatePart("ww", dtmDate + 7 , vbMonday, vbFirstFourDays) = 2 Then weekNr = 1 End If End Function %>
Første udgave. Der er tilføjet en funktion som hedder findMandag og den bruges til at finde mandag i den valgte uge ud fra ugeNr og årstal. Ligenu er årstal Year(Date) så scriptet kan ikke springe imellem to år endnu (hvis du vil havde det?). For man kan bestemme en dato i en bestemt uge skal der nemlig både uge nummer og årstal til.
<% Session.LCID = 1030
if request.QueryString("uge") = "" then ugeNr = weekNr(dato) Else ugeNr = CInt(request.QueryString("uge")) End if
'Find dato, første mandag i den valgte uge dato = findMandag(ugeNr,Year(Date))
<% 'Den første dag i indeværende uge: Function getDate(ByVal weekNr, ByVal startDate) If Not isDate(startDate) Then Exit Function dato = CDate(startDate) Do While DatePart("ww", dato, vbMonday, vbFirstFourDays) <> weekNr dato = DateAdd("d", 1, dato) Loop getDate = dato End Function 'find uge nummer Function weekNr (dtmDate) ' Week Of Year weekNr = DatePart("ww", dtmDate, vbMonday, vbFirstFourDays) If weekNr > 52 Then If DatePart("ww", dtmDate + 7 , vbMonday, vbFirstFourDays) = 2 Then weekNr = 1 End If End Function 'Find mandag i valgt uge,år function findMandag(uge,aar) d = DateSerial(aar, 1, 1) ' 1/1/i år 'find mandag i uge 1 If DatePart("ww", d, 2, 2) = 1 Then 'Hvis 1/1 er i uge 1 While(DatePart("w", d, 2, 2) <> 1) 'find sidste mandag d = DateAdd("d", -1, d) WEnd Else While(DatePart("ww", d, 2, 2) <> 1) 'find næste mandag d = DateAdd("d", 1, d) WEnd End If findMandag = DateAdd("d", 7*(uge-1), d) 'juster til ugenummer, mandag end function %>
Du kunne sikkert genkende noget af koden for det var fra dig i et andet spørgsmål her på exp.dk - Det er jo som det plejer. Det virker perfekt!
Men ville det være vanskeligt at lave det så scriptet kunnne springe imellem to år. Jeg har nok ikke helt fundet den råde tråd med Datoer, så alt hjælp er velkommen.
Nej det er ikke så svært at tilføje år. Det med at skifte år er tilføjet til det kode som er vist nedenfor.
Næste og Forrige links er lavet ved at finde næste uge+år og forrige uge+år ud fra den dato man viser ved dette: 'uge + / - 1 tmpDato = DateAdd("ww",1,dato) ugeNrp= weekNr(tmpDato) aarNrp= Year(tmpDato+3) tmpDato = DateAdd("ww",-1,dato) ugeNrm= weekNr(tmpDato) aarNrm= Year(tmpDato+3)
Her er hele koden:
<% Session.LCID = 1030
if request.QueryString("uge") = "" then ugeNr = weekNr(date) Else ugeNr = CInt(request.QueryString("uge")) End if if request.QueryString("aar") = "" then aar = Year(date) Else aar = CInt(request.QueryString("aar")) End if
'Find første dag i den valgt uge dato = findMandag(ugeNr,aar)
<% 'Den første dag i indeværende uge: Function getDate(ByVal weekNr, ByVal startDate) If Not isDate(startDate) Then Exit Function dato = CDate(startDate) Do While DatePart("ww", dato, vbMonday, vbFirstFourDays) <> weekNr dato = DateAdd("d", 1, dato) Loop getDate = dato End Function 'find uge nummer Function weekNr (dtmDate) ' Week Of Year weekNr = DatePart("ww", dtmDate, vbMonday, vbFirstFourDays) If weekNr > 52 Then If DatePart("ww", dtmDate + 7 , vbMonday, vbFirstFourDays) = 2 Then weekNr = 1 End If End Function
function findMandag(uge,aar) d = DateSerial(aar, 1, 1) ' 1/1/i år 'find mandag i uge 1 If DatePart("ww", d, 2, 2) = 1 Then 'Hvis 1/1 er i uge 1 While(DatePart("w", d, 2, 2) <> 1) 'find sidste mandag d = DateAdd("d", -1, d) WEnd Else While(DatePart("ww", d, 2, 2) <> 1) 'find næste mandag d = DateAdd("d", 1, d) WEnd End If findMandag = DateAdd("d", 7*(uge-1), d) 'juster til ugenummer, mandag end function %>
flot kode, jeg har selv haft brug for noget ligende. Er der mon en der kan rette den så den viser ovenstående for de næste 4 uger? Altså hvis denne uge er uge 19 så vises de næste 4 hele uger (20,21,22,23)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.