Nu står det still... Kolla detta: Den här funktionen använder jag i VBA Kom fram till två lösningar själv efter en del labbande... Det finns säkert smidigare lösningar men detta exempel fungerarVeckonr till datum
Hur utläser jag datum från veckonummer?
Det jag vill ha ut är ett datum avseende veckans
första dag dvs - måndag.
Exempel: måndag vecka 27 är den 1 juli
mvh
TorbjörnSv: Veckonr till datum
http://www.pellesoft.nu/development/forum/view.asp?msgid=4773&forumid=1Sv: Veckonr till datum
Har inte testat den i ASP men det borde funka
med lite justeringar
Funktionen tar två argument
tlVnum = veckonummer
tlYear = årtal
<code>
'################################################################
' Beräknar datum för måndag i vald vecka
'###############################################################
Private Function tlDATUM_VECKA(tlVnum, tlYear)
Dim i, iFirstday, iFirstmonday, tlBerÅr
iFirstday = Application.Weekday(DateSerial(tlYear, 1, 1), 2)
For i = 1 To 7
If Application.Weekday(DateSerial(tlYear, 1, i), 2) = 1 Then
iFirstmonday = i
Exit For
End If
Next i
If iFirstday > 4 Or iFirstday = 1 Then
tlDATUM_VECKA = DateSerial(tlYear, 1, iFirstmonday) - 7 + (tlVnum * 7)
Else
tlDATUM_VECKA = DateSerial(tlYear, 1, iFirstmonday) - 14 + (tlVnum * 7)
End If
End Function
</code>
/ThommySv: Veckonr till datum
Bägge ger datum för veckans första dag - måndag.
------------------------------------------------------------
vStart = (Date() - DatePart("w", Date(),2)) + 1
Response.Write(vStart)
------------------------------------------------------------
vStart = DateAdd("d",1 - WeekDay(Date(),2), Date())
Response.Write(vStart)
------------------------------------------------------------
Men jag skulle även vilja kunna ändra veckonummer och på samma sätt få fram aktuellt datum för den måndagen.
Nån som har har en smidig lösning på en input av veckonummer till att bygga vidare på ovan exempel.
mvh
TorbjörnSv: Veckonr till datum
Filen heter Test_Vnum.asp
Input rutorna måste också valideras så att
det bara går att mata in veckonummer mellan
1 och 53 och år mellan ex 2002 och 2010
/Thommy
<code>
<%
Dim CurrYear
Dim CurrWeek
Dim CurrDate
Function VECKA_VALD(tlYearC, tlMonthC, tlDayC)
Dim dNow, djan1, dFirstmon, dDaycount
dNow = DateSerial(tlYearC, tlMonthC, tlDayC)
For i = 1 To 7
djan1 = Weekday(DateSerial(tlYearC, 1, i))
If djan1 = 2 Then dFirstmon = DateSerial(tlYearC, 1, i)
Next
djan1 = Weekday(DateSerial(tlYearC, 1, 1))
If djan1 = 1 Then djan1 = 7 Else djan1 = djan1 - 1
If djan1 > 4 Or djan1 = 1 Then dDaycount = dNow + 7 - dFirstmon Else dDaycount = dNow + 14 - dFirstmon
VECKA_VALD = Fix(dDaycount / 7)
End Function
Function DateFromWeek(iVnum, iYear)
Dim i, iFirstday, iFirstmonday
iFirstday = Weekday(DateSerial(iYear, 1, 1), 2)
For i = 1 To 7
If Weekday(DateSerial(iYear, 1, i), 2) = 1 Then
iFirstmonday = i
Exit For
End If
Next
If iFirstday > 4 Or iFirstday = 1 Then
DateFromWeek = DateSerial(iYear, 1, iFirstmonday) - 7 + (iVnum * 7)
Else
DateFromWeek = DateSerial(iYear, 1, iFirstmonday) - 14 + (iVnum * 7)
End If
End Function
If Request.Form("T2") = "" Then
CurrYear = Year(now)
Else
CurrYear = Request.Form("T2")
End if
If Request.Form("T1") = "" Then
CurrWeek = VECKA_VALD(Year(now), Month(now), Day(now))
Else
CurrWeek = Request.Form("T1")
End if
CurrDate = DateFromWeek(CurrWeek, CurrYear)
%>
<html>
<head>
<meta http-equiv="Content-Language" content="sv">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Test Vnum</title>
</head>
<body>
<form method="POST" action="Test_Vnum.asp">
<p>Vecka <input type="text" name="T1" size="20"><br>
År <input type="text" name="T2" size="20"></p>
<p><input type="submit" value="Byt Vecka" name="B1">
<input type="reset" value="Återställ" name="B2"></p>
</form>
<p>Måndag den <%=CurrDate%> vecka <%=CurrWeek%></p>
</body>
</html>
</code>