Avatar billede para7 Nybegynder
11. oktober 2012 - 12:55 Der er 4 kommentarer og
1 løsning

Finde dato for en dag i en uge

Er der nogen der ved, hvordan man laver en funktion, der virker. Har prøvet at strikke noget sammen, jeg har googlet, men den virker ikke med rigtig dato for hele året.

<%
Session.LCID = 1030

intYear = 2012
'bytWeek = 2
bytWeek = 41
dayQuery = "torsdag"

'Response.write dayQuery & "<br>"

Response.write WeekDate(bytWeek,intYear,dayQuery)

Function WeekDate(byval bWeek, byval iYear, byval idayname)
    dtmDate = DateSerial(iYear,1,1)
    dtmDateReturn = DateAdd("ww",bWeek,dtmDate)
    iday0 = Replace(Replace(Replace(Replace(Replace(idayname,"mandag",1),"tirsdag",2),"onsdag",3),"torsdag",4),"fredag",5)
    iday = Replace(Replace(Replace(Replace(iday0,"loerdag",6),"soendag",7),"lørdag",6),"søndag",7)
    dtmDateReturn = DateAdd("d",iday-6,dtmDateReturn)
    WeekDate = dtmDateReturn
End Function
%>
Avatar billede mireigi Novice
11. oktober 2012 - 16:16 #1
Jeg ville nok starte med at gøre det lidt mere overskueligt:

dicDayNumber = Server.CreateObject("Scripting.Dictionary")
dicDayNumber.Add "mandag", 1
dicDayNumber.Add "tirsdag", 2
dicDayNumber.Add "onsdag", 3
dicDayNumber.Add "torsdag", 4
dicDayNumber.Add "fredag", 5
dicDayNumber.Add "lørdag", 6
dicDayNumber.Add "loerdag", 6
dicDayNumber.Add "søndag", 7
dicDayNumber.Add "soendag", 7

Function WeekDate(byval bytWeek, byval intYear, byval strDayName)

  dtmDate = DateSerial(intYear, 1, 1)
  dtmDate = DateAdd("ww", bytWeek, dtmDate)
  intWeekDay = WeekDay(dtmDate, 1)
  intOffset = dicDayNumber(strDayName) - intWeekDay

  WeekDate = DateAdd("d", intOffset, dtmDate)
End Function


Du er nødt til at finde ud af hvilken dag i ugen du starter på.

1. januar 2012 er på en søndag, altså vil 1/1/2012 + 42 uger også ligge på en søndag. Ved at finde ugedagen (WeekDay), kan du ramme den rigtige dag i ugen. Vil du gerne ramme fredag, trækker du altså 2 dage fra datoen (5 - 7).
Avatar billede para7 Nybegynder
11. oktober 2012 - 16:48 #2
Tak, men det er vel et udkast, kan ikke lige få det til at køre. Det her dato regnskab er ret uoverkommeligt for mig. Man skulle tro det var ret enkelt at beregne hvad dag man har ud fra en given uge.
Avatar billede para7 Nybegynder
11. oktober 2012 - 18:42 #3
Dit forslag var meget bedre, skulle bare lige fixes lidt,og have en korrektion på -6, så ser det ud til at holde alle tests:

Altså, jeg er kommet frem til det her:

intYear = 2012
bytWeek = 1
dayQuery = "torsdag"

Response.write WeekDate(bytWeek,intYear,dayQuery)

Function WeekDate(byval bytWeek, byval intYear, byval strDayName)
  dtmDate = DateSerial(intYear, 1, 1)
  dtmDate = DateAdd("ww", bytWeek, dtmDate)
  intWeekDay = WeekDay(dtmDate, 1)
    Set dicDayNumber = Server.CreateObject("Scripting.Dictionary")
    dicDayNumber.Add "mandag", 1
    dicDayNumber.Add "tirsdag", 2
    dicDayNumber.Add "onsdag", 3
    dicDayNumber.Add "torsdag", 4
    dicDayNumber.Add "fredag", 5
    dicDayNumber.Add "lørdag", 6
    dicDayNumber.Add "loerdag", 6
    dicDayNumber.Add "søndag", 7
    dicDayNumber.Add "soendag", 7
    intOffset = dicDayNumber.Item(strDayName) - intWeekDay -6
    WeekDate = DateAdd("d", intOffset, dtmDate)
End Function


Tak for nu. Mission accomplished. Skriv lige svar for point...
Avatar billede mireigi Novice
12. oktober 2012 - 00:24 #4
Velbekomme :)

Har selv rodet med datoer i ASP, og det er ikke helt nemt :)
Avatar billede para7 Nybegynder
12. oktober 2012 - 17:22 #5
Ja, jeg er gået mere over til PHP, hvor det er muligt, og det er klart smartere end good old ASP :)
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