Skip to content

Instantly share code, notes, and snippets.

@TorbjornHoltmon
Last active February 22, 2023 09:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save TorbjornHoltmon/ecece5c1e2b5c44266f92935cb0a2352 to your computer and use it in GitHub Desktop.
Save TorbjornHoltmon/ecece5c1e2b5c44266f92935cb0a2352 to your computer and use it in GitHub Desktop.
Get week number from ISO string typescript
export function getWeekNumberFromISOString(date: string): number {
const newYear = new Date(new Date(date).getFullYear(), 0, 1);
let day = newYear.getDay() - 1; // the day of week the year begins on
day = day >= 0 ? day : day + 7;
const dayNumber: number =
Math.floor(
(new Date(date).getTime() -
newYear.getTime() -
(new Date(date).getTimezoneOffset() - newYear.getTimezoneOffset()) * 60000) /
86400000
) + 1;
let weekNumber: number;
// if the year starts before the middle of a week
if (day < 4) {
weekNumber = Math.floor((dayNumber + day - 1) / 7) + 1;
if (weekNumber > 52) {
const nYear = new Date(new Date(date).getFullYear() + 1, 0, 1);
let nday = nYear.getDay() - 1;
nday = nday >= 0 ? nday : nday + 7;
/* if the next year starts before the middle of
the week, it is week #1 of that year */
weekNumber = nday < 4 ? 1 : 53;
}
} else {
weekNumber = Math.floor((dayNumber + day - 1) / 7);
}
return weekNumber;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment