@technobuddha/library
Version: 
A large library of useful functions
26 lines • 2.64 kB
JavaScript
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=