Avatar billede quarkb Nybegynder
23. februar 2009 - 21:22 Der er 4 kommentarer og
1 løsning

Dato beregning.

Er det muligt at finde en dato ud fra følgende kendte informationer:

årstal (f.eks. 2009)
Uge nr. (f.eks. 09)
ugedag (f.eks. mandag)

ønsket resultat dato (f.eks. 23.02.2009)
Avatar billede ellebaek Nybegynder
23. februar 2009 - 23:22 #1
Sådan her måske:

<%
'sætter dine værdier ind
dayOfWeek = 1
weekno = 9
thisYear = 2009

'beregner den første mandag (for at finde uge nr 1)
TempDate = CDate("01/01/" & thisYear) - WeekDay("01/01/" & thisYear, vbMonday) + 1

'tilføjer antal uger
TempDate = TempDate + 7 * (weekno - 1)

'tilføjer dagen i ugen
TempDate = TempDate + (dayOfWeek-1)

response.write TempDate
%>

Så kan du selv formatere datoen. Ovenstående giver en dato ud, som så kan formateres enten via LCID eller blot almindelig streng-leg..
Avatar billede quarkb Nybegynder
23. februar 2009 - 23:56 #2
hmm. ser ikke helt forkert ud, men hvis nu du vælge uge 9 for 2012 bliver det den 20/2 som faktisk kun er uge 8...
Her du en løsning på dette??
Avatar billede hansdam Nybegynder
24. februar 2009 - 00:23 #3
Jeg har siddet og rodet lidt med en anden løsning. Jeg indrømmer gerne at den ikke er nær så elegant, men den virker.

Session.LCID = 1030

intYear = 2012
intWeek = 08
strWeekday = "mandag"

function getDate(varYear, varWeek, varWeekday)
   
    startDate = "01-01-" & varYear
   
    rightDate = false
    recCount = 0
   
    do while rightDate = false
        tempDate = DateAdd("d",recCount,startDate)
       
        if DatePart("ww",tempDate) = varWeek and varYear = year(tempDate) and getWeekday(varWeekday) = Weekday(tempDate) then
            rightDate = true
        end if
       
        recCount = recCount+1
    loop
   
    getDate = tempDate
   
end function


function getWeekday(varWeekday)
   
    select case LCase(varWeekday)
        case LCase("mandag")
            getWeekday = vbMonday
        case LCase("tirsdag")
            getWeekday = vbTuesday
        case LCase("onsdag")
            getWeekday = vbWednesday
        case LCase("torsdag")
            getWeekday = vbThursday
        case LCase("fredag")
            getWeekday = vbFriday
        case LCase("lørdag")
            getWeekday = vbSaturday
        case else 'Søndag
            getWeekday = vbSunday
    end select
   
end function

Response.write getDate(intYear,intWeek,strWeekday)
Avatar billede quarkb Nybegynder
24. februar 2009 - 07:13 #4
Det ser udtil at det er lige noget i denne retning jeg leder efter, lav svar og du får de 100 point.

Tak for din hjælp.
Avatar billede hansdam Nybegynder
24. februar 2009 - 08:18 #5
No problemo
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

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