Avatar billede madssch Nybegynder
24. februar 2004 - 15:34 Der er 4 kommentarer og
1 løsning

Datoer ud fra ugenummer

Hej Eksperter!

Jeg efterlyser en funktion, som kan fortælle mig hvilke datoer et bestemt ugenummer indeholder.

Hvis jeg f.eks. spørger på ugenummer 9 (2004), skal den returnere (23-02-2004 - 29-02-2004).

Ligger nogen inde med en sådan funktion - eller alternativt - har nogen et godt forslag til hvordan en sådan funktion bygges op?

På forhånd tak!
Avatar billede nute Nybegynder
24. februar 2004 - 15:56 #1
Dim strYear : strYear = "2004"
Dim strWeek : strWeek = "14"
Dim objDate : objDate = DateSerial( strYear, "01", "01" )
Dim objNewDate : objNewDate = DateAdd( "ww", CInt( strWeek ) - 1, objDate )
Dim intDayOfWeek : intDayOfWeek = WeekDay( objNewDate )
Dim objStartDate : objStartDate = DateAdd( "d", intDayOfWeek - 8, objNewDate )
Dim strEndDate : strEndDate = DateAdd( "d", 8 - intDayOfWeek, objNewDate )

Response.Write( "Uge " & strWeek & " går fra " & objStartDate & " til " & strEndDate )


du skal være obs på følgende:

intDayOfWeek - 8
og
8 - intDayOfWeek

det kommer an på hvilken dag din server har som default "first day of week". som default bruges søndag (som er "dag 0". min maskine har mandag, som er "dag 1" som default.

for at finde ud hvilken værdi du skal bruge, så skal du lægge 7 til værdien for dagen ... hvis mandag er default, så skal du bruge (7+1=) 8. hvis lørdag er default, skal du bruge (7+7=) 14

prøv ...

/nute
Avatar billede madssch Nybegynder
24. februar 2004 - 16:17 #2
Det der er virkelig høj klasse! Det virker jo perfekt!

Og dog...

Skifter jeg året til 2005 går det galt. Så indeholder mine uger kun 2 dage..?
Avatar billede nute Nybegynder
24. februar 2004 - 17:06 #3
ups ... en lille bug ...denne skulle fungere:

Dim strWeekDays : strWeekDays = "Søndag,Mandag,Tirsdag,Onsdag,Torsdag,Fredag,Lørdag"
Dim arrWeekDays : arrWeekDays = SPLIT( strWeekDays,"," )
Dim strYear : strYear = "2004"
Dim strWeek : strWeek = "9"
Dim objDate : objDate = DateSerial( strYear, "01", "01" )
Dim intFirstWeekDay : intFirstWeekDay =  WeekDay( objDate, 3 )
Dim objNewDate : objNewDate = DateAdd( "ww", CInt( strWeek ) - 1, objDate )
Dim intDayOfWeek : intDayOfWeek = WeekDay( objNewDate, 2 )
Dim objStartDate : objStartDate = DateAdd( "d", -( intFirstWeekDay ), objNewDate )
Dim objEndDate : objEndDate = DateAdd( "d", ( 7 - intDayOfWeek ), objNewDate )
Response.Write( "Uge " & strWeek & "/" & strYear & " går fra " & arrWeekDays( WeekDay( objStartDate ) - 1 ) & " den " & objStartDate  )
Response.Write( " til " & arrWeekDays( WeekDay( objEndDate ) - 1 ) & " den " & objEndDate  )

/nute
Avatar billede madssch Nybegynder
25. februar 2004 - 09:42 #4
Ja, det var vist bedre. Super!

Tak for hjælpen!
Avatar billede nute Nybegynder
25. februar 2004 - 12:29 #5
lukker du så spørgsmålet ?

;o]
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