hejsa jeg så lige et major fejl. Da den mindste måned aldrig kan være på under 28 dage kan man jo ligesågodt formindske loopsne. Hastigheden er ca. 10x hurtigere på denne vil jeg tro. Kan max loope 3 gange. Så her er der ingen perfomance fælder :)
<%
Function MonthLength(monthNumber)
monthNow = monthNumber
if monthnumber < 10 then monthnumber = \"0\" & monthnumber end if
\'## RIGTIGT DATO FORMAT (mm/dd/yy) startDate = cdate(monthnumber & \"/28/\" & year(now))
Function GetLastDay(intMonthNum, intYearNum) dim dNextStart
if CInt(intMonthNum)=12 then dNextStart= CDate(\"1/1/\" & intYearNum+1) else if month(\"1/2/2000\")=1 then dNextStart= CDate(intMonthNum+1&\"/1/\"&intYearNum) else dNextStart= CDate(\"1/\"&intMonthNum+1&\"/\"&intYearNum) end if end if GetLastDay= Day(dNextStart-1) end function
Function DaysInMonth(Month, Year) If Month<1 or Month>12 then DaysInMonth=0 If Month=1 then DaysInMonth=31 If Month=3 then DaysInMonth=31 If Month=5 then DaysInMonth=31 If Month=7 then DaysInMonth=31 If Month=8 then DaysInMonth=31 If Month=10 then DaysInMonth=31 If Month=12 then DaysInMonth=31 If Month=4 then DaysInMonth=30 If Month=6 then DaysInMonth=30 If Month=9 then DaysInMonth=30 If Month=11 then DaysInMonth=30 If Month=2 then If Year/4=int(Year/4) then If Year/100=int(Year/100) then If Year/400=int(Year/400) then DaysInMonth=29 else DaysInMonth=28 End If Else DaysInMonth=29 End If Else DaysInMonth=28 End If End If
Starten er simpel nok, men Skudsårs-handleren kan godt være uoverskuelig, men den skulle virke....
Du kan jo selv teste hvilke der tager højde for skudår.
i år 2000 har februar som sagt 29 dage.
Jeg ved min funktion virker. Jeg tror ikke der er nogen store performance forskel på nogen af løsninger. Men det er meget sjovt at se vores forskellige indgangsvinkler...
Bare som kommentar, denne er da klart den nemmeste metode:
Function LastDay(MyMonth, MyYear) Select Case MyMonth Case 1, 3, 5, 7, 8, 10, 12 LastDay = 31
Case 4, 6, 9, 11 LastDay = 30
Case 2 If IsDate(MyYear & "-" & MyMonth & "-" & "29") Then LastDay = 29 Else LastDay = 28
Case Else LastDay = 0
End Select End Function
Synes godt om
Ny brugerNybegynder
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.