retail-calendar
Version:
A configurable retail calendar
20 lines (19 loc) • 1.22 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var date_utils_1 = require("./date_utils");
var last_day_nearest_eom_1 = require("./last_day_nearest_eom");
var PenultimateDayOfWeekNearestEOMStrategy = /** @class */ (function () {
function PenultimateDayOfWeekNearestEOMStrategy() {
}
PenultimateDayOfWeekNearestEOMStrategy.prototype.getLastDayForGregorianLastDay = function (lastDayOfGregorianYear, lastDayOfIsoWeek, retailCalendarYear) {
// get penultimate day of ISO week by moving one day back
var penultimateDayOfIsoWeek = lastDayOfIsoWeek === 0 ? 6 : lastDayOfIsoWeek - 1;
// use last day nearest end of month logic
var lastDayNearestEOMStrategy = new last_day_nearest_eom_1.LastDayNearestEOMStrategy();
var lastWeekOfYear = lastDayNearestEOMStrategy.getLastDayForGregorianLastDay(lastDayOfGregorianYear, penultimateDayOfIsoWeek, retailCalendarYear);
// move the day one day forward to get the last day of the week
return date_utils_1.addDaysToDate(lastWeekOfYear, 1);
};
return PenultimateDayOfWeekNearestEOMStrategy;
}());
exports.PenultimateDayOfWeekNearestEOMStrategy = PenultimateDayOfWeekNearestEOMStrategy;