From 571e3dea5e85c4ba54065acd8e6feb5fe1f9ec03 Mon Sep 17 00:00:00 2001 From: Noah Loomans Date: Tue, 6 Sep 2016 15:10:44 +0200 Subject: added week selection --- public/javascripts/getWeek.js | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 public/javascripts/getWeek.js (limited to 'public/javascripts/getWeek.js') diff --git a/public/javascripts/getWeek.js b/public/javascripts/getWeek.js new file mode 100644 index 0000000..5c82a27 --- /dev/null +++ b/public/javascripts/getWeek.js @@ -0,0 +1,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 + var target = new Date() + + // ISO week date weeks start on monday + // so correct the day number + var 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 + var 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 -- cgit v1.1