UNPKG

@technobuddha/library

Version:
37 lines (36 loc) 1.96 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getISOWeekOfYear = void 0; var constants_1 = require("../constants"); var floor_1 = __importDefault(require("../floor")); var getBeginningOfWeek_1 = __importDefault(require("../getBeginningOfWeek")); var getISOWeeksInYear_1 = __importDefault(require("../getISOWeeksInYear")); /** * Determine the ISO week number for a given date * * @param input The date * @param __namedParameteres see {@link Options} * @default weekOneIncludes Thursday * @default firstDayOfWeek Monday * @returns the week number (1-53) */ function getISOWeekOfYear(input, _a) { var _b = _a === void 0 ? {} : _a, _c = _b.UTC, UTC = _c === void 0 ? false : _c, _d = _b.weekOneIncludes, weekOneIncludes = _d === void 0 ? constants_1.day.thursday : _d, _e = _b.firstDayOfWeek, firstDayOfWeek = _e === void 0 ? constants_1.day.monday : _e; var bow = getBeginningOfWeek_1.default(input, { UTC: UTC, firstDayOfWeek: firstDayOfWeek }); var week1 = UTC ? getBeginningOfWeek_1.default(new Date(Date.UTC(bow.getUTCFullYear(), constants_1.month.january, weekOneIncludes)), { UTC: UTC, firstDayOfWeek: firstDayOfWeek }) : getBeginningOfWeek_1.default(new Date(bow.getFullYear(), constants_1.month.january, weekOneIncludes), { UTC: UTC, firstDayOfWeek: firstDayOfWeek }); var week = 1 + floor_1.default((bow.getTime() - week1.getTime()) / constants_1.ticksPerWeek, { tolerance: 0.05 }); var year = UTC ? bow.getUTCFullYear() : bow.getFullYear(); var weeks = getISOWeeksInYear_1.default(year, { UTC: UTC, weekOneIncludes: weekOneIncludes }); if (week > weeks) { year += 1; week = 1; } return { year: year, week: week }; } exports.getISOWeekOfYear = getISOWeekOfYear; exports.default = getISOWeekOfYear;