Avatar billede ldanielsen Nybegynder
01. december 2000 - 11:26 Der er 9 kommentarer og
1 løsning

Ugenumre?

Jeg laver en kalender der bl.a. skal vise ugenumre, så når jeg har en given dato, skal jeg have at vide hvilken ugenr. den befinder sig i.

Så forklar mig lige dette: Mandag d. 31/12 2001 er i uge 53, men Tirsdag d. 1/1 2002 er i uge 1????

DatePart(\"ww\",cDate(#12/31/01#),2,1) giver 53
DatePart(\"ww\",cDate(#1/1/02#),2,1) giver 1

Syntaksen er ifølge MSDN Library:
DatePart(interval, date[, firstdayofweek[, firstweekofyear]])

Og de angiver at firstdayofweek = 2 betyder at mandag er ugens første dag, samt at firstweekofyear = 1 betyder at årets første uge er den, hvori 1. Januar befinder sig.

Jeg har løst mit problem, derfor kun 30 point, men jeg vil gerne høre om der er en fornuftig forklaring.

Hilsen Lars
Avatar billede tdaugaard Nybegynder
01. december 2000 - 11:28 #1
Grunden til at Mandag d. 31/12 2001 er i uge 53, men Tirsdag d. 1/1 2002 er i uge 1 er at d. 1/1 ALTID er i uge 1 da det er et nyt år. Det er såre simpelt.
Avatar billede moses Praktikant
01. december 2000 - 11:38 #2
Du skal i den danske ugetælling bruge:

DatePart(\"ww\",cDate(#12/31/01#),2,2)
DatePart(\"ww\",cDate(#1/1/02#),2,2)

Første firedages uge hedder uge 1

Avatar billede moses Praktikant
01. december 2000 - 11:39 #3
Så lander begge dage i uge 1
Avatar billede ldanielsen Nybegynder
01. december 2000 - 12:22 #4
moses, du har ret (halleluja).

MEN der er stadig noget galt

Mandag den 29/12 2003 er i uge 53, men tirsdag d. 30/12 2003 er i uge 1 ?????

Lige så skørt som det forgående

Men at du gør mig opmærksom på at \"Første firedages uge hedder uge 1\"-reglen gælder i Danmark, det var bare i orden. Jeg troede at det var \"ugen m. 1. jan er nr 1\"-reglen der gælder. Outlook giver dig ret, men kan man være sikker?
Avatar billede moses Praktikant
01. december 2000 - 13:54 #5
Det skal virke, som jeg har beskrevet, men der er en fejl i VBA DatePart funktionen !!!!!!!!!!

Når den skal finde den første uge, som har 4 dage i det nye år, så regner den med uger, der starter med søndag - uanset, om du har angivet, at ugen starter en mandag ?!?!!?!
Avatar billede ldanielsen Nybegynder
01. december 2000 - 13:58 #6
Ja, det er da rart at det ikke kun er mig der laver fejl :o)
Avatar billede ldanielsen Nybegynder
01. december 2000 - 14:01 #7
Hov, det forklarer da ikke at mandag og tirsdag er i hver sin uge(Nr)? Sagen er, at der kun er en dag i uge 53, nemlig mandagen. Skørt!!
Avatar billede moses Praktikant
01. december 2000 - 14:21 #8
Jo det forklarer netop det.

Sådan ser funktionen ugen, når den skal beregne hvornår det hedder uge 1.

lørdag 27        52
-----------------------
søndag 28        53
mandag 29        53
tirsdag 30      53
onsdag 31        53
torsdag 1        53
fredag 2        53
lørdag 3        53
-------------------
søndag 4          1

MEN når den skal angive ugenummer for den enkelte dag, så ser det sådan ud:

lørdag 27        52
søndag 28        52
-----------------------
mandag 29        1
tirsdag 30      1
onsdag 31        1
torsdag 1        1
fredag 2        1
lørdag 3        1
søndag 4          1

Funktionen består af en \"førstedags\"-del og en \"alle de andre dage\"-del.

Når funktionen beregner at ugenummeret for den første dag i ugen er, som valg nummer 1 siger (uge 53), så glemmer den, at det ikke var søndag, men mandag den valgte:

altså mandag 29 lander derfor i uge 53.

Næste dag beregnes i anden del af funktionen.
Den første dag er ... mandag (nu vælger den korrekt efter dine parametre), så der er 4 dage i næste år - altså er dette uge 1. Tirsdag er derfor også uge 1.

FADÆSE !!!!
Avatar billede ldanielsen Nybegynder
01. december 2000 - 20:50 #9
DatePart(\"ww\",cDate(#12/28/03#),2,2) = 52
DatePart(\"ww\",cDate(#12/29/03#),2,2) = 53
DatePart(\"ww\",cDate(#12/30/03#),2,2) = 1

Det er da under alle omstændigheder forkert, ikke?

Får du samme resultat?

Avatar billede moses Praktikant
06. december 2000 - 14:25 #10
Det er korrekt, at det fungerer sådan.
Det er forkert, at det skal fungere sådan.

Så er det sagt.

Amerikanere er nogle navlebeskuende individer.
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