Avatar billede bugger Nybegynder
21. august 2003 - 00:37 Der er 5 kommentarer og
1 løsning

Fejl i kalendermånederne okt,nov,dec

Hejsa
Jeg har denne kalender (jeg kan ikke huske hvor den kommer fra), men den laver fejl i månederne oktober november december.
1 december = 1-02-2002
1 november = 1-01-2002
1 oktober = 1-00-2002
Det er jo godt nok nogle trælse måneder, men derfor behøver kalenderen jo ikke lave fejl :-)
Er der nogen der kan gennemskue hvad der er galt i koden?
Hilsen
Bugger

<html>
<head>
<title>Dette er et ASP dokument </title>
    <link rel="stylesheet" type="text/css" href="asp-css.css">
</head>
<body>
<%
dtmDate = Request.QueryString("date")

response.write "<p><b><hr>" & dtmdate & "<hr>"

dtmToday = Date

If dtmDate = "" Then
    dtmDate = Date
Else
    dtmDate = CDate(dtmDate)
End if

intYear = Year(dtmDate)
strMonth = MonthName(Month(dtmDate))
intDayOfMonth = Day(dtmDate)
dtmFirstDate = DateAdd("d", (-intDayOfMonth)+1, dtmDate)
intFirstDay = Weekday(dtmFirstDate, vbMonday)
%>

<div align="center"><center>

<table cellspacing="0" cellpadding="2" border="0" valign="top"
style="border: 1px solid rgb(0,0,0)">
<tr>
<td colspan="7" align="center" valign="middle" bgcolor="#000000"><font face="Verdana"
size="2" color="#ffffff"><strong><%=strMonth%>&nbsp;<%=intYear%></strong></font></td>
</tr>
<tr>
<td align="center">Man</td>
<td align="center">Tir</td>
<td align="center">Ons</td>
<td align="center">Tors</td>
<td align="center">Fre</td>
<td align="center">Lør</td>
<td align="center">Søn</td>
</tr>
<%
For y = 1 to 6
    If blnLast <> True Then
        Response.Write "<tr>"
        For x = 1 to 7
            Response.Write "<td align=center><font face=verdana size=2>"
            intLoopDay = intLoopDay + 1
            If intLoopDay >= intFirstDay Then
                dtmCurDate = DateAdd("d", intLoopDay-intFirstDay, dtmFirstDate)
                If Month(dtmCurDate) = Month(dtmFirstDate) Then
                    If dtmCurDate = dtmToday Then
                        Response.Write "<strong>"
                    End If
                    If Len(Day(dtmCurDate)) = 1 then
                    vis_dato = "0" & Day(dtmCurDate)
                    else
                    vis_dato = Day(dtmCurDate)
                    end if
                    Response.Write "<a href='kalender.asp?date=" & vis_dato & "-" & right(dtmDate,6) & "'>" & Day(dtmCurDate) & "</a>"
                    Response.Write "</strong></td>"
                    blnLast = False
                Else
                    Response.Write "-</td>"
                    blnLast = True
                End If
            Else
                Response.Write "-</td>"
                blnLast = True
            End if
        Next
    End If
Next
Response.Write "</font></td></tr>"
%>
<tr>
<td colspan="3"><font face="verdana" size="2"><b><a href="kalender.asp?date=<%=DateAdd("m",-1,dtmFirstDate)%>">Forrige</a></b></font></td>
<td>&nbsp;</td>
<td colspan="3" align="right"><font face="verdana" size="2"><b><a href="kalender.asp?date=<%=DateAdd("m",1,dtmFirstDate)%>">Næste</a></b></font></td>
</tr>
</table>
</center></div>
Avatar billede eagleeye Praktikant
21. august 2003 - 08:35 #1
Skriver den oktober, november og december rigtigt som tekst, ved du hvor fejlen kommer?
Avatar billede eagleeye Praktikant
21. august 2003 - 08:46 #2
Det enste sted der kan komme et 0 ind foran er i denne linje:
vis_dato = "0" & Day(dtmCurDate)

men det er dagen som laves der, så måke den bytter rundt på day og månede, men det tror jeg ikke helt da den kun bruger dato funktionerne.

Prøv evt at sætte Sessio.LCID=1033 for at tvinge den til eksvis DK dato format

<% Session.LCID = 1033 %>
Avatar billede nielle Nybegynder
21. august 2003 - 08:48 #3
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<html>
<head>
<title>Dette er et ASP dokument </title>
    <link rel="stylesheet" type="text/css" href="asp-css.css">
</head>
<body>
<%
Session.LCID = 1030  ' RETTELSE: Dansk datofomat
dtmDate = Request.QueryString("date")

response.write "<p><b><hr>" & dtmdate & "<hr>"

dtmToday = Date

If dtmDate = "" Then
    dtmDate = Date
Else
    dtmDate = CDate(dtmDate)
End if

intYear = Year(dtmDate)
strMonth = MonthName(Month(dtmDate))
intDayOfMonth = Day(dtmDate)
dtmFirstDate = DateAdd("d", (-intDayOfMonth)+1, dtmDate)
intFirstDay = Weekday(dtmFirstDate, vbMonday)
%>

<div align="center"><center>

<table cellspacing="0" cellpadding="2" border="0" valign="top"
style="border: 1px solid rgb(0,0,0)">
<tr>
<td colspan="7" align="center" valign="middle" bgcolor="#000000"><font face="Verdana"
size="2" color="#ffffff"><strong><%=strMonth%>&nbsp;<%=intYear%></strong></font></td>
</tr>
<tr>
<td align="center">Man</td>
<td align="center">Tir</td>
<td align="center">Ons</td>
<td align="center">Tors</td>
<td align="center">Fre</td>
<td align="center">Lør</td>
<td align="center">Søn</td>
</tr>
<%
For y = 1 to 6
    If blnLast <> True Then
        Response.Write "<tr>"
        For x = 1 to 7
            Response.Write "<td align=center><font face=verdana size=2>"
            intLoopDay = intLoopDay + 1
            If intLoopDay >= intFirstDay Then
                dtmCurDate = DateAdd("d", intLoopDay-intFirstDay, dtmFirstDate)
                If Month(dtmCurDate) = Month(dtmFirstDate) Then
                    If dtmCurDate = dtmToday Then
                        Response.Write "<strong>"
                    End If
                    If Len(Day(dtmCurDate)) = 1 then
                      vis_dato = "0" & Day(dtmCurDate)
                    else
                      vis_dato = Day(dtmCurDate)
                    end if
                    Response.Write "<a href='kalender.asp?date=" & vis_dato & "-" & Right(dtmDate, 7) & "'>" & Day(dtmCurDate) & "</a>"  ' RETTELSE: 6 ændret til 7
                    Response.Write "</strong></td>"
                    blnLast = False
                Else
                    Response.Write "-</td>"
                    blnLast = True
                End If
            Else
                Response.Write "-</td>"
                blnLast = True
            End if
        Next
    End If
Next
Response.Write "</font></td></tr>"
%>
<tr>
<td colspan="3"><font face="verdana" size="2"><b><a href="kalender.asp?date=<%=DateAdd("m",-1,dtmFirstDate)%>">Forrige</a></b></font></td>
<td>&nbsp;</td>
<td colspan="3" align="right"><font face="verdana" size="2"><b><a href="kalender.asp?date=<%=DateAdd("m",1,dtmFirstDate)%>">Næste</a></b></font></td>
</tr>
</table>
</center>
</div>
</body>
</html>
Avatar billede nielle Nybegynder
21. august 2003 - 08:51 #4
Der var faktisk fejl i din kalender for samtlige datoer - ikke kun de tre nævnte måneder - når du klikkede på en dato så røg du til januar med det samme. Fejlen bestod kort fortalt i at du havde et miks mellem dansk og amerikansk datoformat: Dansk format er 21-08-2003 mens det amerikanske er 8/21/2003. Du havde derfor fået byttet om på betydningen af dag og måned.
Avatar billede nielle Nybegynder
21. august 2003 - 08:56 #5
eagleeye -> Session.LCID = 1033 er nu amerikans format, men jeg går ud fra at det bare var en svipser. ;^)

Anyway, det er ikke nok med at sætte datoformatet til dansk (Session.LCID = 1030). Er er nemlig en fejl mere; Der hvor datoen udskrives i selve tabellen klippes datoens sidste 6 tegn af. Dette giver en fejl når vi bevæger os op i de 2-cifrede måneder 21-11-2003 klippes i såfald af til 1-2003. Den korekte version er at klippe de sidste 7 tegn af.
Avatar billede bugger Nybegynder
21. august 2003 - 09:10 #6
Super nielle
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester