UNPKG

@chce/weeknumber-iso8601

Version:

Function to calculate the week number of a given date

23 lines (21 loc) 937 B
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 };