UNPKG

@progress/kendo-date-math

Version:

Kendo UI typescript package exporting functions for Date manipulations

55 lines (54 loc) 2.32 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.weekInYear = void 0; var day_enum_1 = require("./day.enum"); var add_days_1 = require("./add-days"); var create_date_1 = require("./create-date"); var prev_day_of_week_1 = require("./prev-day-of-week"); var constants_1 = require("./constants"); var get_date_1 = require("./get-date"); var moveDateToWeekStart = function (date, weekStartDay) { if (weekStartDay !== day_enum_1.Day.Monday) { return (0, add_days_1.addDays)((0, prev_day_of_week_1.prevDayOfWeek)(date, weekStartDay), 4); } return (0, add_days_1.addDays)(date, (4 - (date.getDay() || 7))); }; var calcWeekInYear = function (date, weekStartDay) { var firstWeekInYear = (0, create_date_1.createDate)(date.getFullYear(), 0, 1, -6); var newDate = moveDateToWeekStart(date, weekStartDay); var diffInMS = newDate.getTime() - firstWeekInYear.getTime(); var days = Math.floor(diffInMS / constants_1.MS_PER_DAY); return 1 + Math.floor(days / 7); }; /** * A function that returns the number of the week within a year, which is calculated in relation to the date. * * For more information, refer to the [**ISO week date**](https://en.wikipedia.org/wiki/ISO_week_date) article. * * @param date - The date used for the week number calculation. * @param weekStartDay - The first day of the week. By default, the first week day is Monday. * @returns - The number of the week within the year. * * @example * ```ts-no-run * weekInYear(new Date(2016, 0, 1)); // Week 53, 2015 * weekInYear(new Date(2016, 0, 5)); // Week 1, 2016 * weekInYear(new Date(2017, 0, 1)); // Week 52, 2016 * weekInYear(new Date(2017, 0, 2)); // Week 1, 2017 * ``` */ var weekInYear = function (date, weekStartDay) { if (weekStartDay === void 0) { weekStartDay = day_enum_1.Day.Monday; } date = (0, get_date_1.getDate)(date); var prevWeekDate = (0, add_days_1.addDays)(date, -7); var nextWeekDate = (0, add_days_1.addDays)(date, 7); var weekNumber = calcWeekInYear(date, weekStartDay); if (weekNumber === 0) { return calcWeekInYear(prevWeekDate, weekStartDay) + 1; } if (weekNumber === 53 && calcWeekInYear(nextWeekDate, weekStartDay) > 1) { return 1; } return weekNumber; }; exports.weekInYear = weekInYear;