UNPKG

@technobuddha/library

Version:
26 lines 2.64 kB
import { day, daysPerWeek, month } from "./date.js"; import { isNumber } from "./is-number.js"; import { modulo } from "./modulo.js"; /** * Determine the number of ISO weeks within a year * @param input - A date within the year, or a year number * @param options - see {@link ISOWeeksInYearOptions} * @defaultValue weekOneIncludes Thursday * @returns The number of weeks in the year (52 or 53) * @group Time * @category Week */ export function isoWeeksInYear(input, { utc = false, weekOneIncludes = day.thursday } = {}) { const year = isNumber(input) ? input : utc ? input.getUTCFullYear() : input.getFullYear(); const dow0 = utc ? new Date(Date.UTC(year, month.january, 1)).getUTCDay() : new Date(year, month.january, 1).getDay(); const dow1 = utc ? new Date(Date.UTC(year, month.december, 31)).getUTCDay() : new Date(year, month.december, 31).getDay(); const target = modulo(weekOneIncludes, daysPerWeek); return dow0 === target || dow1 === target ? 53 : 52; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXNvLXdlZWtzLWluLXllYXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaXNvLXdlZWtzLWluLXllYXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEdBQUcsRUFBa0IsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNwRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGFBQWEsQ0FBQztBQWNyQzs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sVUFBVSxjQUFjLENBQzVCLEtBQW9CLEVBQ3BCLEVBQUUsR0FBRyxHQUFHLEtBQUssRUFBRSxlQUFlLEdBQUcsR0FBRyxDQUFDLFFBQVEsS0FBNEIsRUFBRTtJQUUzRSxNQUFNLElBQUksR0FDUixRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUs7UUFDdkIsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRTtZQUM5QixDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3hCLE1BQU0sSUFBSSxHQUNSLEdBQUcsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRTtRQUN4RCxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDOUMsTUFBTSxJQUFJLEdBQ1IsR0FBRyxDQUFDLENBQUM7UUFDSCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFO1FBQzFELENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNoRCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsZUFBZSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBRXBELE9BQU8sSUFBSSxLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUN0RCxDQUFDIn0=