Använd DateAdd() istället för att lägga till manuellt. Med de datumfunktioner som finns inbyggda i VBScript vet du att du alltid hanterar giltiga datum.
Mvh
3 svar · 207 visningar · startad av andreas_lindh
Jag har en kalender där jag har de här funktionerna för att skapa länkar till nästa och föregående månad
Function prevmonth(Byval x, Byref y)
If x = 1 Then
y = y - 1
x = 12
link = "default.asp?m=" & x & "&y=" & y
Else
y = y
x = x - 1
link = "default.asp?m=" & x & "&y=" & y
End If
prevmonth = link
end function
Function nextmonth(Byval a, Byref b)
If a = 12 Then
b = b + 1
a = 1
link = "default.asp?m=" & a & "&y=" & b
Else
b = b
a = a + 1
link = "default.asp?m=" & a & "&y=" & b
End If
nextmonth = link
end function
Jag använder den så här
<% = nextmonth(m,y) %>
m och y får jag fram så här
if request.querystring("m") = "" then
y = datepart("yyyy",date())
m = datepart("m",date())
else
y = request.querystring("y")
m = request.querystring("m")
end if
Funktionen för föregående månad fungerar. Funktionen för nästa månad fungerar också bra förutom i januari.
Länken i december år 2003 ser ut så här
[url]http://localhost/jkalender/default.asp?m=1&y=2004[/url]
Men sen när jag är i januari 2004 ser länken ut så här
[url]http://localhost/jkalender/default.asp?m=2&y=2003[/url]
Någon som ser vad som är fel?
Använd DateAdd() istället för att lägga till manuellt. Med de datumfunktioner som finns inbyggda i VBScript vet du att du alltid hanterar giltiga datum.
Mvh
Men jag har aldrig några hela datum utan bara nummret på månaden och året
sen hämtar jag händelser ut kalendern så här
sql="select distinct datum from kalender where month(datum) = " & m &" and year(datum) =" & y &" and vem='p' order by datum"
set rsp = oconn.execute(sql)
och funktionen prevmont fungerar som den ska
länken till föregående månad i januari blir
[url]http://localhost/jkalender/default.asp?m=12&y=2002[/url]
och
länken i december blir då rätt
[url]http://localhost/jkalender/default.asp?m=11&y=2002[/url]
Så jag förstår inte varför inte nextmonth fungerar
Du kan fortfarande använda dig av DateAdd() även om du bara har år och månad.
dDate = myYear & "-" & myMonth & "-01"
nextMonth = DateAdd("m",1,dDate)
prevMonth = DateAdd("m",-1,dDate)
- magnus