blob: 40b0bb47424c23b2a64376b0bcb75b0529357f6e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
// copied from http://www.meetingpointmco.nl/Roosters-AL/doc/dagroosters/untisscripts.js,
// were using the same code as they do to be sure that we always get the same
// week number.
function getWeek () {
// Create a copy of this date object
const target = new Date()
// ISO week date weeks start on monday
// so correct the day number
const dayNr = (target.getDay() + 6) % 7
// ISO 8601 states that week 1 is the week
// with the first thursday of that year.
// Set the target date to the thursday in the target week
target.setDate(target.getDate() - dayNr + 3)
// Store the millisecond value of the target date
const firstThursday = target.valueOf()
// Set the target to the first thursday of the year
// First set the target to january first
target.setMonth(0, 1)
// Not a thursday? Correct the date to the next thursday
if (target.getDay() !== 4) {
target.setMonth(0, 1 + ((4 - target.getDay()) + 7) % 7)
}
// The weeknumber is the number of weeks between the
// first thursday of the year and the thursday in the target week
return 1 + Math.ceil((firstThursday - target) / 604800000) // 604800000 = 7 * 24 * 3600 * 1000
}
module.exports = getWeek
|