@technobuddha/library
Version:
A large library of useful functions
37 lines (36 loc) • 1.96 kB
JavaScript
;
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;