alliance-calendar
Version:
Calendrier Alliance Digital
110 lines (104 loc) • 2.82 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.isHoliday = isHoliday;
var _moment = _interopRequireDefault(require("moment"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
/**
* Calcule la date de Pâques pour une année donnée (algorithme de Gauss)
* @param {number} year - L'année
* @returns {moment.Moment} - La date de Pâques
*/
function getEasterDate(year) {
var a = year % 19;
var b = Math.floor(year / 100);
var c = year % 100;
var d = Math.floor(b / 4);
var e = b % 4;
var f = Math.floor((b + 8) / 25);
var g = Math.floor((b - f + 1) / 3);
var h = (19 * a + b - d - g + 15) % 30;
var i = Math.floor(c / 4);
var k = c % 4;
var l = (32 + 2 * e + 2 * i - h - k) % 7;
var m = Math.floor((a + 11 * h + 22 * l) / 451);
var month = Math.floor((h + l - 7 * m + 114) / 31);
var day = (h + l - 7 * m + 114) % 31 + 1;
return (0, _moment["default"])(new Date(year, month - 1, day));
}
/**
* Vérifie si une date est un jour férié en France
* @param {moment.Moment} date - La date à vérifier
* @returns {boolean} - true si c'est un jour férié, false sinon
*/
function isHoliday(date) {
if (!date || !_moment["default"].isMoment(date)) {
return false;
}
var year = date.year();
var month = date.month() + 1; // moment months are 0-indexed
var day = date.date();
// Jours fériés fixes
var fixedHolidays = [{
month: 1,
day: 1
},
// Jour de l'An
{
month: 5,
day: 1
},
// Fête du Travail
{
month: 5,
day: 8
},
// Victoire en Europe
{
month: 7,
day: 14
},
// Fête Nationale
{
month: 8,
day: 15
},
// Assomption
{
month: 11,
day: 1
},
// Toussaint
{
month: 11,
day: 11
},
// Armistice
{
month: 12,
day: 25
} // Noël
];
// Vérifier les jours fériés fixes
for (var _i = 0, _fixedHolidays = fixedHolidays; _i < _fixedHolidays.length; _i++) {
var holiday = _fixedHolidays[_i];
if (month === holiday.month && day === holiday.day) {
return true;
}
}
// Calculer les jours fériés variables basés sur Pâques
var easter = getEasterDate(year);
var easterMonday = (0, _moment["default"])(easter).add(1, 'day');
var ascension = (0, _moment["default"])(easter).add(39, 'days');
var whitMonday = (0, _moment["default"])(easter).add(50, 'days');
// Vérifier les jours fériés variables
var variableHolidays = [easter, easterMonday, ascension, whitMonday];
for (var _i2 = 0, _variableHolidays = variableHolidays; _i2 < _variableHolidays.length; _i2++) {
var _holiday = _variableHolidays[_i2];
if (date.format('YYYY-MM-DD') === _holiday.format('YYYY-MM-DD')) {
return true;
}
}
return false;
}