Aktuelle Kalenderwoche

KW 48

Vom 23.11.2020

Bis 29.11.2020

Kalenderwochen in Javascript

Für viele Anwendungsfälle ist es notwendig die Kalenderwoche in Javascript festzustellen. Dabei gibt es 2 Fälle zu berücksichtigen. Zum einem die aktuelle Kalenderwoche und zum anderen die Kalenderwoche zu einem bestimmten Datum. Folgend wird eine Möglichkeit aufgezeigt, wie sie an diese Informationen kommen.

Die aktuelle Kalenderwoche in Javascript

In Javascript gibt es eine einfache Möglichkeit die aktuelle Kalenderwoche festzustellen.

<script>
var date = new Date();

// Get thursday
// In JavaScript the Sunday has value 0 as return value of getDay() function.
// So we have to order them first ascending from Monday to Sunday
// Monday: ((1+6) % 7) = 0
// Tuesday ((2+6) % 7) = 1
// Wednesday: ((3+6) % 7) = 2
// Thursday: ((4+6) % 7) = 3
// Friday: ((5+6) % 7) = 4
// Saturday: ((6+6) % 7) = 5
// Sunday: ((0+6) % 7) = 6
// (3 - result) is necessary to get the Thursday of the current week.
// If we want to have Tuesday it would be (1-result)
var currentThursday = new Date(date.getTime() +(3-((date.getDay()+6) % 7)) * 86400000);

// At the beginnig or end of a year the thursday could be in another year.
var yearOfThursday = currentThursday.getFullYear();

// Get first Thursday of the year
var firstThursday = new Date(new Date(yearOfThursday,0,4).getTime() +(3-((new Date(yearOfThursday,0,4).getDay()+6) % 7)) * 86400000);

// +1 we start with week number 1
// +0.5 an easy and dirty way to round result (in combinationen with Math.floor)
var weekNumber = Math.floor(1 + 0.5 + (currentThursday.getTime() - firstThursday.getTime()) / 86400000/7);

document.write(weekNumber);
</script>

Die Kalenderwoche zu einem bestimmten Datum

In vielen Fällen will man jedoch nicht die aktuelle Kalenderwoche in Javascript sondern die Kalenderwoche zu einem bestimmten Datum. Für dieses Problem gibt es ebenfalls eine einfache Möglichkeiten die folgend gezeigt wird.

<script>
// Get Date Objekt from 2020.12.24
var date = new Date(2020,11,24);

// In JavaScript the Sunday has value 0 as return value of getDay() function.
// So we have to order them first ascending from Monday to Sunday
// Monday: ((1+6) % 7) = 0
// Tuesday ((2+6) % 7) = 1
// Wednesday: ((3+6) % 7) = 2
// Thursday: ((4+6) % 7) = 3
// Friday: ((5+6) % 7) = 4
// Saturday: ((6+6) % 7) = 5
// Sunday: ((0+6) % 7) = 6
// (3 - result) is necessary to get the Thursday of the current week.
// If we want to have Tuesday it would be (1-result)
var currentThursday = new Date(date.getTime() +(3-((date.getDay()+6) % 7)) * 86400000);

// At the beginnig or end of a year the thursday could be in another year.
var yearOfThursday = currentThursday.getFullYear();

// Get first Thursday of the year
var firstThursday = new Date(new Date(yearOfThursday,0,4).getTime() +(3-((new Date(yearOfThursday,0,4).getDay()+6) % 7)) * 86400000);

// +1 we start with week number 1
// +0.5 an easy and dirty way to round result (in combinationen with Math.floor)
var weekNumber = Math.floor(1 + 0.5 + (currentThursday.getTime() - firstThursday.getTime()) / 86400000/7);

document.write(weekNumber);
</script>