Дело должно прекратиться в День Картахены. Я пытаюсь вычислить Dynami c Publi c Праздники колумбийского календаря с INPUT VAR. Этот код определяется тремя основными функциями: 1 для вычисления PASCUA DAY , 1 для вычисления MONDAY publi c праздничных дней , но с динамическими значениями c week и последней для stati c publi c праздничные дни .
Я не могу найти, почему не работает, существует много консольного журнала для целей отладки.
var date = new Date();
var dateYear = date.getFullYear();
// Dia de San Jose
var dateSanJose = dateYear + "/03/19";
dateSanJose = new Date(dateSanJose);
// Dia de la epifania
var dateEpifania = dateYear + "/01/06";
dateEpifania = new Date(dateEpifania);
// Dia de San Pedro y San Pablo
var dateSPSP = dateYear + "/06/29";
dateSPSP = new Date(dateSPSP);
// Dia de la Asunción de la Virgen
var dateAsuncVirgen = dateYear + "/08/15";
dateAsuncVirgen = new Date(dateAsuncVirgen);
// Día de la raza
var dateRaza = dateYear + "/10/12";
dateRaza = new Date(dateRaza);
// Día de todos los santos
var dateSantos = dateYear + "/11/01";
dateSantos = new Date(dateSantos);
// Día de la independencia de cartagena
var dateCartagena = dateYear + "/11/11";
dateCartagena = new Date(dateCartagena);
//---------- FECHAS FIJAS -----------//
var dateNuevoAno = new Date(dateYear + "/01/01");
var dateTrabajo = new Date(dateYear + "/05/01");
var dateIndependencia = new Date(dateYear + "/07/20");
var dateBatallaBoyaca = new Date(dateYear + "/08/07");
var dateInmaculada = new Date(dateYear + "/12/08");
var dateNavidad = new Date(dateYear + "/12/25");
//---------- FECHAS SEGÚN PASCUA -----------//
var pascuaDay = pascua(dateYear);
var dateJuevesSanto = operateDays(3, pascuaDay, false);
var dateViernesSanto = operateDays(2, pascuaDay, false);
var dateAscencion = operateDays(43, pascuaDay, true);
var dateCorpusChristi = operateDays(64, pascuaDay, true);
var dateSagradoCorazon = operateDays(71, pascuaDay, true);
//----------- FECHAS TRASLADABLES----------//
var dateSanJose = trasladableHolidays(dateSanJose);
var dateEpifania = trasladableHolidays(dateEpifania);
var dateSPSP = trasladableHolidays(dateSPSP);
var dateAsuncVirgen = trasladableHolidays(dateAsuncVirgen);
var dateRaza = trasladableHolidays(dateRaza);
var dateSantos = trasladableHolidays(dateSantos);
var dateCartagena = trasladableHolidays(dateCartagena);
function trasladableHolidays(dateVariable){
dateCorrect = dateVariable;
dateCorrect.setDate(dateVariable.getDate() + (1 + 7 - dateVariable.getDay()) % 7);
return dateCorrect;
}
function operateDays(days, date, suma){
var initialDate = new Date(date);
var newDate = new Date(date);
if (suma) {
newDate.setDate(initialDate.getDate() + days);
}else{
newDate.setDate(initialDate.getDate() - days);
}
return newDate;
}
//Función para realizar el cálculo del domingo de pascua
function pascua(year) {
if(year>1900 && year<2099) {
M=24; N=5;
}
else if (year>2100 && year<2199) {
M=24; N=6;
}
else if (year>2200 && year<2299) {
M=25; N=0;
}
a = year % 19;
b = year % 4;
c = year % 7;
d = ((19*a) + M) % 30;
e = ((2*b) + (4*c) + (6*d) + N) % 7;
f = d + e;
if (f < 10) {
dia = f + 22; mes = 3;
}
else {
dia = f - 9; mes = 4;
}
if(dia==26 && mes==4){
dia = 19;
}
if(dia==25 && mes==4 && d==28 && e==6 && a>10){
dia = 18;
}
pascua = new Date(year,mes-1,dia);
return pascua;
};
console.log("Año nuevo: " + dateNuevoAno)
console.log("Día del trabajo: " + dateTrabajo)
console.log("Día de la independencia: " + dateIndependencia)
console.log("La batalla de Boyaca: " + dateBatallaBoyaca)
console.log("Día de la inmaculada concepción: " + dateInmaculada)
console.log("Día de Navidad: " + dateNavidad)
console.log("Jueves Santo: " + dateJuevesSanto)
console.log("Viernes Santo: " + dateViernesSanto)
console.log("Día de la ascensión: " + dateAscencion)
console.log("Día del corpus christi: " + dateCorpusChristi)
console.log("Día del sagrado corazón: " + dateSagradoCorazon)
console.log("Día de los reyes magos: " + dateEpifania)
console.log("Día de San Jose: " + dateSanJose)
console.log("Dia de San Pedro y San Pablo: " + dateSPSP)
console.log("Día de la Asunción de la virgen: " + dateAsuncVirgen)
console.log("Día de la raza: " + dateRaza)
console.log("Día de todos los santos: " + dateSantos)
console.log("Día de la independencia de cartagena: " + dateCartagena)
//------------------------------------//
//----Validación Motor de Reglas-----//
//-----------------------------------//
var InputDate = new Date("2020-11-16 00:00:00");
console.log("DEFINICION INPUT DATE: " + InputDate);
//InputDate = dateCartagena
switch (InputDate)
{
case dateCartagena :
console.log("TODAY IS CARTAGENA")
break;
case 1:
console.log("Today is Monday")
break;
default:
console.log("VALOR POR DEFECTO SW CASE: " + dateCartagena);
break;
}
Это окончательное решение, надеюсь, что это работает для всех остальных.
var date = new Date();
var dateYear = date.getFullYear();
// Dia de San Jose
var dateSanJose = dateYear + "/03/19";
dateSanJose = new Date(dateSanJose);
// Dia de la epifania
var dateEpifania = dateYear + "/01/06";
dateEpifania = new Date(dateEpifania);
// Dia de San Pedro y San Pablo
var dateSPSP = dateYear + "/06/29";
dateSPSP = new Date(dateSPSP);
// Dia de la Asunción de la Virgen
var dateAsuncVirgen = dateYear + "/08/15";
dateAsuncVirgen = new Date(dateAsuncVirgen);
// Día de la raza
var dateRaza = dateYear + "/10/12";
dateRaza = new Date(dateRaza);
// Día de todos los santos
var dateSantos = dateYear + "/11/01";
dateSantos = new Date(dateSantos);
// Día de la independencia de cartagena
var dateCartagena = dateYear + "/11/11";
dateCartagena = new Date(dateCartagena);
//---------- FECHAS FIJAS -----------//
var dateNuevoAno = new Date(dateYear + "/01/01");
var dateTrabajo = new Date(dateYear + "/05/01");
var dateIndependencia = new Date(dateYear + "/07/20");
var dateBatallaBoyaca = new Date(dateYear + "/08/07");
var dateInmaculada = new Date(dateYear + "/12/08");
var dateNavidad = new Date(dateYear + "/12/25");
//---------- FECHAS SEGÚN PASCUA -----------//
var pascuaDay = pascua(dateYear);
var dateJuevesSanto = operateDays(3, pascuaDay, false);
var dateViernesSanto = operateDays(2, pascuaDay, false);
var dateAscencion = operateDays(43, pascuaDay, true);
var dateCorpusChristi = operateDays(64, pascuaDay, true);
var dateSagradoCorazon = operateDays(71, pascuaDay, true);
//----------- FECHAS TRASLADABLES----------//
var dateSanJose = trasladableHolidays(dateSanJose);
var dateEpifania = trasladableHolidays(dateEpifania);
var dateSPSP = trasladableHolidays(dateSPSP);
var dateAsuncVirgen = trasladableHolidays(dateAsuncVirgen);
var dateRaza = trasladableHolidays(dateRaza);
var dateSantos = trasladableHolidays(dateSantos);
var dateCartagena = trasladableHolidays(dateCartagena);
function trasladableHolidays(dateVariable){
dateCorrect = dateVariable;
dateCorrect.setDate(dateVariable.getDate() + (1 + 7 - dateVariable.getDay()) % 7);
return dateCorrect;
}
function operateDays(days, date, suma){
var initialDate = new Date(date);
var newDate = new Date(date);
if (suma) {
newDate.setDate(initialDate.getDate() + days);
}else{
newDate.setDate(initialDate.getDate() - days);
}
return newDate;
}
//Función para realizar el cálculo del domingo de pascua
function pascua(year) {
if(year>1900 && year<2099) {
M=24; N=5;
}
else if (year>2100 && year<2199) {
M=24; N=6;
}
else if (year>2200 && year<2299) {
M=25; N=0;
}
a = year % 19;
b = year % 4;
c = year % 7;
d = ((19*a) + M) % 30;
e = ((2*b) + (4*c) + (6*d) + N) % 7;
f = d + e;
if (f < 10) {
dia = f + 22; mes = 3;
}
else {
dia = f - 9; mes = 4;
}
if(dia==26 && mes==4){
dia = 19;
}
if(dia==25 && mes==4 && d==28 && e==6 && a>10){
dia = 18;
}
pascua = new Date(year,mes-1,dia);
return pascua;
};
//console.log("Año nuevo: " + dateNuevoAno)
//console.log("Día del trabajo: " + dateTrabajo)
//console.log("Día de la independencia: " + dateIndependencia)
//console.log("La batalla de Boyaca: " + dateBatallaBoyaca)
//console.log("Día de la inmaculada concepción: " + dateInmaculada)
//console.log("Día de Navidad: " + dateNavidad)
//console.log("Jueves Santo: " + dateJuevesSanto)
//console.log("Viernes Santo: " + dateViernesSanto)
//console.log("Día de la ascensión: " + dateAscencion)
//console.log("Día del corpus christi: " + dateCorpusChristi)
//console.log("Día del sagrado corazón: " + dateSagradoCorazon)
//console.log("Día de los reyes magos: " + dateEpifania)
//console.log("Día de San Jose: " + dateSanJose)
//console.log("Dia de San Pedro y San Pablo: " + dateSPSP)
//console.log("Día de la Asunción de la virgen: " + dateAsuncVirgen)
//console.log("Día de la raza: " + dateRaza)
//console.log("Día de todos los santos: " + dateSantos)
//console.log("Día de la independencia de cartagena: " + dateCartagena)
//------------------------------------//
//----Validación Motor de Reglas-----//
//-----------------------------------//
var InputDate = new Date("2020-01-06 00:00:00");
console.log("DEFINICION INPUT DATE: " + InputDate);
//InputDate = dateCartagena
switch (InputDate.toString())
{
case dateCartagena.toString() :
console.log("TODAY IS CARTAGENA")
break;
case dateSantos.toString() :
console.log("TODAY IS dateSantos")
break;
case dateRaza.toString() :
console.log("TODAY IS dateRaza")
break;
case dateAsuncVirgen.toString() :
console.log("TODAY IS dateAsuncVirgen")
break;
case dateSPSP.toString() :
console.log("TODAY IS dateSPSP")
break;
case dateSanJose.toString() :
console.log("TODAY IS CARTAGENA")
break;
case dateEpifania.toString() :
console.log("TODAY IS dateEpifania")
break;
case dateSagradoCorazon.toString() :
console.log("TODAY IS dateSagradoCorazon")
break;
case dateCorpusChristi.toString() :
console.log("TODAY IS dateCorpusChristi")
break;
case dateAscencion.toString() :
console.log("TODAY IS dateAscencion")
break;
case dateViernesSanto.toString() :
console.log("TODAY IS dateViernesSanto")
break;
case dateJuevesSanto.toString() :
console.log("TODAY IS dateJuevesSanto")
break;
case dateInmaculada.toString() :
console.log("TODAY IS dateInmaculada")
break;
case dateBatallaBoyaca.toString() :
console.log("TODAY IS dateBatallaBoyaca")
break;
case dateIndependencia.toString() :
console.log("TODAY IS dateIndependencia")
break;
case dateTrabajo.toString() :
console.log("TODAY IS dateTrabajo")
break;
case dateNuevoAno.toString() :
console.log("TODAY IS dateNuevoAno")
break;
default:
console.log("VALOR POR DEFECTO SW CASE: " + dateCartagena);
break;
}