14. januar 2004 - 12:28Der er
16 kommentarer og 2 løsninger
DatePart - Find ugenummer
Jeg har en rutine som benytter funktionen DatePart. Den skal konvertere en dato til et ugenummer.
DatePart("ww", Dato, vbMonday, vbFirstFourDays) Det virkede fint sidste år, men ikke i år (skudår, velsagtens). Hvordan laver jeg det om, så det virker med skudår også?
medions>doesnt seem to work! format(#2004-01-04#, "ww") gives weeek 2 but that isnt correct! and if I use format(#2004-01-04#, "ww",2,2) then this gives me the correct week!
and if I use this format (Date,"ww",2,2) for all dates in 2004 then it gives me the exact same week number as datepart!
puppetmaster, what dates are you having problems with?
Hi, terry. The problem is, that the user enters a weeknumber, e.g. 02 and a year, e.g. 04. the date is then translated into a "date range", from 05-01-2004 to 11-01-2004. With the above week no. and year, the program uses week 53!!! :( :( :(
ok, thanks Terry. Here is the code that calculates the week number: (if )
Function UgeTilDato(uge As Integer) As Date Dim Dato As Date Dim ugenr As Integer Dato = DateValue("1-1-" & uge \ 100) Dato = DateAdd("d", 2 - Weekday(Dato), Dato) ugenr = DatePart("ww", Dato, vbMonday, vbUseSystem) While DatePart("ww", Dato, vbMonday, vbUseSystem) <> 1 ugenr = DatePart("ww", Dato, vbMonday, vbUseSystem) Dato = DateAdd("ww", 1, Dato) Wend UgeTilDato = DateAdd("ww", (uge Mod 100) - 1, Dato) End Function
Well, the parameter, uge, that is transfered, is the number of weeks since 01-01-2000. week 2 year 2004 maps to the value 402. That is then transformed into a date: Dato = DateValue("1-1-" & uge \ 100)
These are some of the results: Week Year Date 02 02 07-01-2002 02 03 06-01-2003 02 04 10-01-2005 02 05 10-01-2005 02 06 09-01-2006 (the 2005 and 2006 dates are NOT a typo!)
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.