Avatar billede tblaster Nybegynder
07. september 2005 - 15:17 Der er 8 kommentarer og
1 løsning

Finde ugenummer af en dato

Hejsa

Hvordan kan jeg finde ugenummeret på en dato? Med month(dato) kan jeg få månedsnummeret ud, men kan ikke finde en ligende til at finde ugenummeret.

På forhånd tak.
Avatar billede xvid Seniormester
07. september 2005 - 15:26 #1
er det sådan noget du tænker på:

<SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript"><!--
function y2k(number) { return (number < 1000) ? number + 1900 : number; }
function getWeek(year,month,day) {
    var when = new Date(year,month,day);
    var newYear = new Date(year,0,1);
    var offset = 7 + 1 - newYear.getDay();
    if (offset == 8) offset = 1;
    var daynum = ((Date.UTC(y2k(year),when.getMonth(),when.getDate(),0,0,0) - Date.UTC(y2k(year),0,1,0,0,0)) /1000/60/60/24) + 1;
    var weeknum = Math.floor((daynum-offset+7)/7);
    if (weeknum == 0) {
        year--;
        var prevNewYear = new Date(year,0,1);
        var prevOffset = 7 + 1 - prevNewYear.getDay();
        if (prevOffset == 2 || prevOffset == 8) weeknum = 53; else weeknum = 52;
    }
    return weeknum;
}
var now = new Date();
weeknum = getWeek(y2k(now.getYear()),now.getMonth(),now.getDate())
document.write('Uge ' +  weeknum);
//--></SCRIPT>
Avatar billede tblaster Nybegynder
07. september 2005 - 15:30 #2
skal bruge det i asp ... men det var sådan noget jeg tænkte på.
Avatar billede fennec Nybegynder
07. september 2005 - 15:36 #3
datepart("ww",date(),2,2)
Avatar billede fennec Nybegynder
07. september 2005 - 15:37 #4
2,2 er for at angive at mandag er førstedag i ugen og at man bruger 4 dags reglen. Du kan læse om datepart() her:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/vsfctDatePart.asp
Avatar billede tblaster Nybegynder
07. september 2005 - 15:42 #5
Super! Takker.
Avatar billede xvid Seniormester
07. september 2005 - 15:43 #6
Respponse.Write "uge nr:" & DatePart("ww",Now)
Avatar billede fennec Nybegynder
07. september 2005 - 16:12 #7
Skal lige nævnes at der er en fejl i funktionen, som kun gælder for firdagsreglen og søndag IKKE er første dag i ugen (gælder altså for DK).

I nogle år bliver den første mandag sat til at være uge 53 i stedet for uge 1. Problemet gælder KUN for denne ene dato og kun i nogle år.

Workaroundet er:
Function getWeekNr(FunkDate)
dim returval
  returval = datepart("ww",FunkDate,2,2)
  if returval > 52 then
    if datepart("ww",dateadd("d",7,FunkDate),2,2) = 2 then returval = 1
  end if
  getWeekNr = returval
End Function
Avatar billede busschou Praktikant
07. september 2005 - 16:50 #8
fennec >> hvorfor benytter man egentlig 2, altså for det med fire dage i ugen? I dokumentationen for 1 som default står "Start with the week in which January 1 occurs"
Det lyder i mine ører mere logisk at man starter sådan at den første uge er den uge som indeholder den første januar, frem for en uge med mindst fire dage

Men kender du forskellen mere specifikt?
Avatar billede fennec Nybegynder
08. september 2005 - 08:32 #9
4 dags reglen er bestemt i ISO 8601 standarten.

Jeg skal ikke kunne sige hvorfor det er sådan, men jeg har et gæt :o)

Reglen sikre at hovedparten af uge 1 ligger i januar. Forstil dig at 1 jan var en søndag. Det betyder at den 26 dec også ligger i uge 1. Samme problem er der med "uge" reglen, hvor uge 1 så først begynder den 7 jan.

4 dags reglen sikre altså, at uge 1 oftere forekommer tættere på 1 jan end de 2 andre regler.
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