Avatar billede stofakiller Nybegynder
23. april 2001 - 19:54 Der er 8 kommentarer og
1 løsning

Hvordan finder ud af hvilken uge....

Hejsa,

Jeg har et lille problem, og det er at jeg vil gerne regne mig frem til den aktuelle uge...

Jeg har prøvet følgende kode, men den regner først rigtigt \"sidst\" på ugen....

<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();
document.write(\'Week number = \' + getWeek(y2k(now.getYear()),now.getMonth(),now.getDate()));
//-->
</script>

Håber i ka\' hjælpe...

På forhånd tak....

Jan
Avatar billede nute Nybegynder
23. april 2001 - 20:14 #1
skal du finne ut den uken som dagens dato ligger i ?
Avatar billede oskar Nybegynder
23. april 2001 - 20:16 #2
Grundentil at dit script regner ved siden af er at du mangler at tage hensyn til hvordan ugenumre beregnes. Du er nødt til først at se på årets første torsdag. Uge 1 defineres ved at den indeholder årets første torsdag. Hvis d 1. januar er en fredag starter uge 1 altså først den 3. januar, men hvis den 1. januar er en torsdag starter uge 1 d. 29. december året før.

/oskar
Avatar billede stofakiller Nybegynder
23. april 2001 - 21:38 #3
Det er rigtigt nute...

Du Oskar, kunne du måske hjælpe mig til at \"finde\" den torsdag, i form af kode til scriptet...
Avatar billede oskar Nybegynder
23. april 2001 - 22:37 #4
Det vil jeg meget gerne, men mine programmeringsevner er ikke så forfærdeligt gode. Jeg har prøvet den sidste ½ time uden held.

Pricippet går ud på at finde den 1. januars ugedagsnummer getDay(). Hvis dagen har nummer 1-4 er uge 1 startet, hvis dagen har nummer 0, 5 eller 6 starter uge1  først om 3-1 dag(e).

dagens #  - uge 1 start rykkes antal dage:
1 -3
2 -2
3 -1
4 0
5 1
6 2
0 3

Jeg roder videre, men vil gerne høre hvis du eller en anden kan få det til at virke.

/oskar
Avatar billede stofakiller Nybegynder
23. april 2001 - 22:52 #5
Jeg prøver allerede...
Avatar billede stofakiller Nybegynder
23. april 2001 - 23:26 #6
Jeg fandt selv løsningen, men kun takket være din hjælp Oskar, mange tak... Håber du måske selv ka\' bruge det....

prøv at sætte disse linier ind i mellem:
  var newYear = new Date(year,0,1);
og
var offset = offset2 + 1 - newYear.getDay();

<-----start-------->
if (newYear.getDay() < 4) {
    offset2 = 4 - newYear.getDay(); }
else {
    offset2 = newYear.getDay() -3; }
<------slut------->

Så det hele bliver...

var newYear = new Date(year,0,1);
if (newYear.getDay() < 4) {
    offset2 = 4 - newYear.getDay(); }
else {
    offset2 = newYear.getDay() -3; }
var offset = offset2 + 1 - newYear.getDay();

Mvh,
Jan
Avatar billede oskar Nybegynder
24. april 2001 - 00:00 #7
Du skal lige ændre + til - i linien:
var offset = offset2 + 1 - newYear.getDay();
så det bliver til
var offset = offset2 - 1 - newYear.getDay();
Avatar billede stofakiller Nybegynder
24. april 2001 - 00:06 #8
Med hvilket formål, jeg synes da ellers den regner rigtigt....
Avatar billede oskar Nybegynder
24. april 2001 - 00:46 #9
Når der står +1 skifter den først ugenummer om onsdagen, med -1 skifter den om mandagen som den skal. Hvisdet virker anderledes hos dig må der være et eller andet galt et sted.
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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