@chce/weeknumber-iso8601
Version:
Function to calculate the week number of a given date
23 lines (21 loc) • 937 B
JavaScript
function getWeekNumberISO8601(date) {
var dayInMilliseconds = 1000 * 60 * 60 * 24;
var year = date.getFullYear();
var firstDayOfYear = new Date(year, 0); // 1 is default day
var weekdayOfFirstDayOfYear = (firstDayOfYear.getDay() + 6) % 7; // Normalise monday as 0th day, sunday as 6th
var firstWeekNumber;
if (weekdayOfFirstDayOfYear < 4) {
// On or before first thursday of the year
firstWeekNumber = 1;
}
else {
// After first thursday of the year
firstWeekNumber = 0;
}
var firstDayOfFirstWeekMs = +firstDayOfYear - weekdayOfFirstDayOfYear * dayInMilliseconds;
var dayDifferenceMs = +date - firstDayOfFirstWeekMs;
var weekDifference = Math.floor(dayDifferenceMs / dayInMilliseconds / 7);
var weekNumber = firstWeekNumber + weekDifference;
return weekNumber || getWeekNumberISO8601(new Date(year - 1, 11, 31));
}
export { getWeekNumberISO8601 };