Het weeknummer berekenen

Op deze bladzijde wordt een function besproken die het weeknummer berekent uit een datum. De JavaScript code kun je downloaden om zelf te gebruiken.

Als je hier nog wat mee wilt spelen dan kan dat.
Klik op de knop hier naast.
Een uitgewerkte toepassing
vind je in het item
"Maandkalender II: met weeknummers"

Informatie over de berekening van het weeknummer
ISO 8601 is de Internationale Norm, vastgesteld door de International Organization for Standardization, die onder andere de nummering van de weken beschrijft.
De Norm stelt dat de week begint op een maandag. Dit is dus de eerste dag van de week. Daardoor is de zondag de laatste dag van de week, dag nummer 7. Dit wijkt af van het gangbare idee (die in de meeste maandkalenders en programmeertalen wordt gebruikt (waaronder JavaScript), dat de eerste dag van de week de zondag is. Men heeft echter gekozen voor de maandag als eerste dag, omdat het tegelijk de eerste werkdag van de week is. Moderne weekagenda's beginnen hun week ook met de maandag.

Weeknummering wordt ook beschreven in de Nederlanse Norm NEN 2772. Deze is geheel in lijn met ISO 8601.

Omdat de week 7 dagen heeft, is de eerste week van het jaar de week die 4 (is afgerond de helft van 7) of meer dagen in dat jaar heeft.

Valt 1 januari op een maandag, dan heeft die week 7 dagen in het nieuwe jaar en is het daarom week 1.
Valt 1 januari op een woensdag, dan heeft die week 2 dagen in het oude en 5 in het nieuwe jaar. Ook deze week is week nummer 1.
Valt 1 januari op een zaterdag, dan heeft die week 5 dagen in het oude en 2 in het nieuwe jaar. Deze week behoort dus nog tot het oude jaar. De eerste week begint dan op 3 januari.

Het is eenvoudig om te zien welke week de eerste van het jaar is. Kijk naar de eerste donderdag van het nieuwe jaar, de vierde dag van de week immers en dus op de helft. Deze week is nummer 1.

Bron: Wikipedia, met aanpassingen/toevoegingen.

Gebruik:

De code ziet er als volgt uit:
 
(Zet dit in de <HEAD>).

<script src="dagdatum.js"></script>
 
<script>
// Weeknummer berekening volgens ISO 8601
function schrikkel(jaar){
  if(((jaar % 4 ==0) && (jaar % 100 != 0)) || (jaar % 400 == 0)) return 1; // wel schrikkeljaar
  else return 0; // geen schrikkeljaar
}
 
function WeekNr(vandaag) {
  var verstrekenMaanden =
    new Array(31,28,31,30,31,30,31,31,30,31,30,31);
  var dagInMaand = vandaag.getDate();
  var dagno = vandaag.getDay(); if (dagno == 0) dagno = 7;
  var maandno = vandaag.getMonth();
  var jaarno = vandaag.getFullYear();
  var verstrekenDagen = 0;
  for(var i=0; i<maandno; i++) verstrekenDagen += verstrekenMaanden[i];
  if (maandno > 1 && schrikkel(jaarno) == 1) verstrekenDagen++;
  var nummer = Math.floor((verstrekenDagen+dagInMaand-dagno+10) / 7);
  if (nummer == 0) {
    var myDate = new Date(jaarno-1,11,31);
    nummer = WeekNr(myDate);
  }
  if (nummer == 53) {
    var H_date = vandaag.getDate(), H_day = vandaag.getDay();
    if (H_date == 29 && H_day == 1) nummer = 1;
    else if (H_date == 30 && H_day <= 2 && H_day !=0) nummer = 1;
    else if (H_date == 31 && H_day <= 3 && H_day !=0) nummer = 1;
  }
  return nummer;
}
</script>
(Zet dit in de <BODY>, op de plaats waar je het nodig hebt).
<script>
var nu = new Date();
document.write('Het is vandaag: <b>',ToonDag(nu),', ',ToonDatum(nu),'</b>. Deze dag valt in week: <b>',WeekNr(nu),'</b>.');
</script>

Downloaden:
 
Druk op de knop: Download deze code  File: voorb188.zip, 1356 bytes.

 
terug

html-188; Laatste wijziging: 4 juli 2022