webForumDet fria alternativet

lista aktuell månads veckonummer

ASP

6 svar · 442 visningar · startad av plelkes

Medlem sedan mars 2002823 inlägg
Frågan#1

Hejdär, här kommer jag med mitt nästa bekymmer:
Jag vill kunna lista aktuell månads veckonummer, dvs för aug-03:
31, 32, 33, 34, 35.
Jag vet att veckonumret fås genom

strDate = ar & "-" & manad & "-01"
start= CDate(strDate)
Response.write DatePart ("ww", start)

men ovanstående ger bara månadens första vecka.
Sista veckan bör fås fam genom

slut = ar & "-" & manad+1 & "-01-1"

Men jag får inte till det hela.
Som vanligt tacksam för hjälp av er

Medlem sedan mars 20002 836 inlägg
#2

Detta kan du testa ... borde funka.

<%
Option Explicit
%>
<html>
<head>
<title>All Weeks In Month</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<%
	Dim dte
	Dim intYear
	Dim intMonth
	Dim intDaysInMonth
	Dim i
	Dim strDate
	Dim start
	
	dte = Date()
	intYear = Year(dte)
	intMonth = Month(dte)
	intDaysInMonth = GetDaysInMonth(dte)
	
	For i = 1 TO intDaysInMonth step 7
		strDate = intYear & "-" & intMonth & "-" & Right("0" & i,2)
		start= CDate(strDate)
		Response.write DatePart ("ww", start) & "<br>"
	Next '## -- i --
%>
</body>
</html>
<%
	Public Function GetDaysInMonth(ByVal dDate)
		Dim iMonth
		iMonth = Month(dDate)
		
		Select Case iMonth
			Case 1,3,5,7,8,10,12
					GetDaysInMonth = 31
			Case 2
				If IsDate("February 29, " & Year(dDate)) Then
					GetDaysInMonth = 29
				Else
					GetDaysInMonth = 28
				End If
				
			Case 2,4,6,9,11
					GetDaysInMonth = 30

		End Select
	End Function
%>

cya,
/PatrikB

Medlem sedan mars 2002823 inlägg
#3

Tack för ditt förslag PatrikB.
skulle du kunna förklara din kod lite mer?

Medlem sedan mars 2002823 inlägg
#4

Nedanstående kod listar datum och dagar för aktuell månad

<%
Dim aDagar(42) 
Dim iDag 
Dim dNewDate
Dim iWeekDay, sWeekDayName

dNewDate = Year(Date()) & "-" & Month(Date()) & "-" & iDag

For iDag = 1 to DatePart("d", DateSerial(Year(Date()), Month(Date())+1, 0)) 'da´n innan första dagen i 
aDagar(iDag) = WeekDayName(DatePart("w",Year(Date()) & "-" & Month(Date()) & "-" & iDag))
Next

For iDag= 1 to DatePart("d", DateSerial(Year(Date()), Month(Date())+1, 0)) 'da´n innan första dagen i 
response.write iDag &"   " & aDagar(iDag) & "<br>"
next
%>

Nu behöver jag er hjälp med attfå fram veckonummren och lista de på dess rätta plats tex:

veckonummer
1 fredag

Medlem sedan mars 20002 836 inlägg
#5

Börjar med den "första konstigheten":

intDaysInMonth = GetDaysInMonth(dte)

sätter en variabel, intDaysInMonth, med returvärdet från en funktion som har ett datum som argument. Retur värdet beror på vilken månad det är, 1, 2, 3 ... osv. Är det månad 1, 3, 5,7,8,10,12 så returneras 31 dagar, månad 2 kan ju ha antingen 28 eller 29 dagar. Så i Case 2 så måste jag göra en test om 29 februari är ett giltigt datum, är det det så returneras 29 annars 28. Sista case är de övriga månaderna som har 30 dagar.

Nästa konstighet:

For i = 1 TO intDaysInMonth step 7

Jag vet första datumet som ALLTID är 1 (start värdet i loopen).
Det den ska loopas mot är antal dagar som jag redan har "räknat" ut. MEN, det är här konstigheten kommer - step 7.
Dvs, jag kommer att börja på 1 och sedan "hoppa" 7 steg då varje vecka har 7 dagar.

Hoppas du förstod mitt lilla svammel här ovan, annars är det bara att fråga igen.

cya,
/PatrikB

Medlem sedan mars 2002823 inlägg
#6

Tyvärr befinner jag mig på jobbet så jag kan ej prova, MEN

Jag vet första datumet som ALLTID är 1 (start värdet i loopen).
Det den ska loopas mot är antal dagar som jag redan har "räknat" ut. MEN, det är här konstigheten kommer - step 7.
Dvs, jag kommer att börja på 1 och sedan "hoppa" 7 steg då varje vecka har 7 dagar.

Gäller detta även för typ augusti 2003, som ju börjar på en fredag, och därför bara har "3 dagar"?

Medlem sedan mars 20002 836 inlägg
#7

Spelar ingen roll "vilken dag" i veckan du räknar på.
Du vet ju att den första kommer i varje månad, om det sedan är dag 1 eller 6 eller 3 eller vilken dag i ordningen det är spelar ingen roll. Den kommer ändå att räkna ut vilken vecka som just det aktuella datumet befinner sig i.
Om datumet befinner sig på fredagen och du sedan steppar i steg om 7 kommer nästa datum att landa på nästkommande fredag osv ... MEN, veckonummret för den aktuella veckan kommer att ges.

cya,
/PatrikB

316 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
184 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
154 ms — ändringar (db)