Avatar billede Slettet bruger
21. oktober 2003 - 00:49 Der er 9 kommentarer og
1 løsning

Beregner datoerne for mandag i uge xx

Hej!

Jeg har følgende:

<%

intYear = 2003

For y = 1 to 52
Response.Write "<td align=""center"" width=""200""><a href=""kalender.asp?"">" & y & "</a></td>"
temp = y / 4
If (y / 4) = Round(temp) Then
Response.Write "</tr><tr>"
End If
Next
%>

Som du nok kan regne ud laver den 52 felter til 52 uger.

Jeg vil gerne have lavet links i disse felter (der hvor a href> er sat ind) som ser ud som 20-10-2003, disse links skal så vise hen til mandagen i uge xx.

Lad os tage et eksempel:

Jeg klikker på uge 43 (det er i denne uge) og kommer derved hen til et link hvor kalender.asp?date=20-10-2003

Til rådighed for at beregne ugernes links er der variablen intYear.
Avatar billede netro Nybegynder
21. oktober 2003 - 05:14 #1
Og hvad så når der er 53 uger?

Måske findes der en lettere måde, men følgende returnerer i hvertfald alle mandage på det år, du kalder funktionen med.

<%
Function Mandage(Aar)
    StartDato = "07-01-" & Aar
    While DatePart("ww", StartDato) <> 1
        StartDato = DateAdd("d", -1, StartDato)
    Wend
    While DatePart("w", StartDato, 0) <> 1
        StartDato = DateAdd("d", -1, StartDato)
    Wend
    For i = 0 To 52
        Dato = DateAdd("d", i*7, StartDato)
        If DateDiff("d", StartDato, Dato) <= 365 Then Mandage = Mandage & Dato & "<br>"
    Next
End Function

Response.Write Mandage(2003)
%>
Avatar billede Slettet bruger
21. oktober 2003 - 10:22 #2
"Og hvad så når der er 53 uger?"

Øhh...der er altid 52 kalenderuger på et år.

Iøvrigt kom jeg i tanke om at det jo er meget nemmere bare at tildele uge 1 01-01-2004 og uge 2 08-01-2004 på den måde vil det altid passe, med forbehold for skudår osv. Men det må jeg lige tænke over...
Avatar billede netro Nybegynder
21. oktober 2003 - 15:22 #3
Så ved jeg ikke, hvad den 53. uge kaldes.
Avatar billede Slettet bruger
21. oktober 2003 - 16:58 #4
Kan du ikke lige finde en kalender hvor der er 53 uger? Jeg bliver meget imponeret så!
Avatar billede Slettet bruger
21. oktober 2003 - 16:59 #5
hmmm..sorry for min uvidenhed, her er jo et bevis på de 53 http://jeppesn.dk/uge.html
Avatar billede netro Nybegynder
21. oktober 2003 - 20:35 #6
Ok - Kunne du bruge min funktion til noget?
Avatar billede netro Nybegynder
21. oktober 2003 - 21:12 #7
Avatar billede Slettet bruger
21. oktober 2003 - 21:48 #8
Nah ikke rigtigt, jeg har pillet lidt med noget andet, men du må gerne lægge et svar alligevel. Jeg fik lidt inspiration :)
Avatar billede Slettet bruger
21. oktober 2003 - 21:50 #9
Men du må meget gerne afprøve nedenstående kode og se om du kan finde nogen fejl ved funktionaliteten, jeg er PHP mand, men koder til nøds lidt ASP.

Jeg har fået skudår til at virke, men jeg mangler en eller anden form for kalender at holde min side op mod, da jeg har svært bed at gennemskue om den regner rigtigt ;)

Here goes:::

<% Session.LCID = 1030 %>
<html>

<head>
<title>Kalender</title>
</head>

<body bgcolor="#FFFFFF" text="#000000" link="#808080" vlink="#808080" alink="#808080">

<%
Function GetFirstDayOfWeek(intWeekNumber, intYear)
    Dim intFirstOfYear, intFirstWeek, intSecondWeek
    intFirstOfYear = Weekday(CDate("1/1/" & intYear))
   
    Select Case intFirstOfYear
          Case 1: intFirstWeek = 0
          Case 2: intFirstWeek = -1
          Case 3: intFirstWeek = -2
          Case 4: intFirstWeek = -3
          Case 5: intFirstWeek = -4
          Case 6: intFirstWeek = -5
          Case 7: intFirstWeek = -6
    End Select
   
    If intFirstWeek < 0 Then
          intWeekNumber = intWeekNumber - 1
    End If
   
    GetFirstDayOfWeek = DateAdd("d", intFirstWeek, DateAdd("WW", intWeekNumber, CDate("1/1/" & intYear)))
End Function
%>

<table width="100%" cellspacing="2" cellpadding="2" border="1">
<tr>
    <td height="235" valign="top">

<%
dtmDate = Request("date")
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)
%>


<table cellspacing="0" cellpadding="2" border="0" valign="top"
style="border: 1px solid rgb(0,0,0)">
<tr>
<td height="25" colspan="7" align="center" valign="middle" bgcolor="#000000" style="color:white"><strong><%=UCase(strMonth)%>&nbsp;<%=intYear%></strong></td>
</tr>
<tr>
<td height="25" bgcolor="#000000" colspan="3"><strong><a
href="kalender.asp?date=<%=DateAdd("m",-1,dtmFirstDate)%>">Forrige</a></strong></td>
<td bgcolor="#000000">
</td>
<td bgcolor="#000000" colspan="3" align="right"><strong><a
href="kalender.asp?date=<%=DateAdd("m",1,dtmFirstDate)%>">Næste</a></strong></td>
</tr>
<tr>
<td height="25" align="center" width="30" bordercolor="#000000"><strong>Man</strong></td>
<td align="center" width="30" bordercolor="#000000"><strong>Tir</strong></td>
<td align="center" width="30" bordercolor="#000000"><strong>Ons</strong></td>
<td align="center" width="30" bordercolor="#000000"><strong>Tor</strong></td>
<td align="center" width="30" bordercolor="#000000"><strong>Fre</strong></td>
<td align="center" width="30" bordercolor="#000000"><strong>Lør</strong></td>
<td align="center" width="30" bordercolor="#000000"><strong>Søn</strong></td>
</tr>
<%
For y = 1 to 6
If blnLast <> True Then
Response.Write "<tr>"
For x = 1 to 7
Response.Write "<td height=""25"" align=""center""><a href=""?date=" & DateAdd("d", intLoopDay-intFirstDay, dtmFirstDate)+1 & """>"
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
Response.Write Day(dtmCurDate)
If dtmCurDate = dtmToday Then
Response.Write "</strong>"
End If
Response.Write "</a></td>"
blnLast = False
Else
Response.Write "</a></td>"
blnLast = True
End If
Else
Response.Write "</a></td>"
blnLast = True
End if
Next
End If
Next
Response.Write "</a></td></tr>"
%>
</table>

</td>
    <td rowspan="2" width="100%" valign="top">
   
<%

dtmToday = Now
intWeekDay = WeekDay(dtmDate)

ugedag = WeekDayName(intWeekDay,True,vbSunday)

ugenummer = DatePart("ww","" & Request("date") & "")

If ugedag = "sø" Then
ugenummer = ugenummer - 1
End If

Select Case ugedag

    Case "ma"
    ugedag = "Mandag"

    Case "ti"
    ugedag = "Tirsdag"

    Case "on"
    ugedag = "Onsdag"

    Case "to"
    ugedag = "Torsdag"

    Case "fr"
    ugedag = "Fredag"

    Case "lø"
    ugedag = "Lørdag"

    Case "sø"
    ugedag = "Søndag"

    Case Else

End Select

%>

Kalender for <strong><% Response.Write ugedag %>&nbsp;<% Response.Write Request("date") %>, der ligger i uge <% Response.Write ugenummer %></strong><br>Her er så noget andet indhold</td>
</tr>
<tr>
    <td>
   

<table width="240" cellspacing="0" cellpadding="2" border="0" valign="top" style="border-top:0px;border-bottom: 1px solid black;border-left: 1px solid black;border-right: 1px solid black">
<tr>
<td bgcolor="#000000"></td>
<td height="25" align="center" bgcolor="#000000" style="color:white"><strong>UGER I <%=intYear%></strong></td>

<td bgcolor="#000000"></td>
</tr>
<tr>
<td height="25" align="left" bgcolor="#000000"><strong><a
href="kalender.asp?date=01-01-<%=intYear - 1%>"><%=intYear - 1%></a></strong></td>
<td bgcolor="#000000"></td>

<td bgcolor="#000000" align="right"><strong><a href="kalender.asp?date=01-01-<%=intYear + 1%>"><%=intYear + 1%></a></strong></td>
</tr>

</table>


<table width="240" 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" style="color:white"></td>
</tr>
<%

'Et år er et skudår hvis årstallet er deleligt med 4. Dette gælder dog ikke årstal delelige med 100, bortset fra dem, der er delelige med 400.

skudaar = 0

If intYear Mod 4 = 0 Then

skudaar = 1

If intYear Mod 100 = 0 Then

skudaar = 0

If intYear Mod 400 = 0 Then

skudaar = 1

Else

skudaar = 0

End If

End If

End If





uge53 = 0

'Ikke skudår:

If skudaar = 0 Then

sddec = "27-12-" & intYear

dtmDate2 = datevalue(sddec)

intWeekDay2 = WeekDay(dtmDate2)
ugedag2 = WeekDayName(intWeekDay2)

If ugedag2 = "søndag" Then

'Hvis d. 27 dec. var en søndag skal uge 53 optræde
uge53 = 1

End If

'Uge 53 indeholder altid datoen 3. januar året efter,
'men uge 53 eksisterer kun
'hvis 27. december var en søndag.

End If


'Skudår:

If skudaar = 1 Then

sddec = "26-12-" & intYear

dtmDate2 = datevalue(sddec)

intWeekDay2 = WeekDay(dtmDate2)
ugedag2 = WeekDayName(intWeekDay2)

If ugedag2 = "lørdag" OR ugedag2 = "søndag" Then

'Hvis d. 26 dec. var en lørdag eller søndag skal uge 53 optræde
uge53 = 1

End If

'Uge 53 indeholder altid datoen 2. januar året efter,
'men uge 53 eksisterer kun
'hvis 26. december var en lørdag eller en søndag.

End If

















For y = 1 to 52
Response.Write "<td height=""25"" align=""center"" width=""200""><a href=""kalender.asp?date="
Response.Write (GetFirstDayOfWeek("" & y & "", "" & intYear & "")+1)
Response.Write """>" & y & "</a></td>"
temp = y / 4
If (temp) = Round(temp) Then
Response.Write "</tr><tr>"
End If
Next

If uge53 = 1 Then

Response.Write "<tr><td height=""25"" align=""center"" width=""200""><a href=""kalender.asp?date="
Response.Write (GetFirstDayOfWeek("" & y & "", "" & intYear & "")+1)
Response.Write """>" & y & "</a></td></tr>"

End If

%>

</tr>

</table>


</td>
</tr>
</table>

</body>
</html>
Avatar billede Slettet bruger
29. oktober 2003 - 09:19 #10
..
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