JavaScript SWITCH CASE无法使用变量日期格式

问题描述 投票:0回答:2

案件应在卡塔赫纳纪念日停止。我正在尝试使用INPUT VAR对哥伦比亚日历的动态公共假期进行数学计算。该代码由3个主要功能定义,1个用于计算PASCUA DAY,1个用于计算MONDAY公共假期,但是具有动态星期,最后一个用于静态公共假期

我找不到为什么不醒来,调试时有很多控制台日志。

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;
}
javascript date-format
2个回答
1
投票

您无法像这样比较日期对象。

尽管这两个日期都是相同的值。他们不平等。

const dateString = "2020/11/11"
let date1 = new Date(dateString)
let date2 = new Date(dateString)

console.log('date1', date1)
console.log('date2', date2)

console.log('equal =', date1 === date2)

要解决此问题,您可以调用toString()并比较字符串。

const dateString = "2020/11/11"
let date1 = new Date(dateString)
let date1String = date1.toString()
let date2 = new Date(dateString)
let date2String = date2.toString()

console.log('date1String', date1String)
console.log('date2String', date2String)

console.log('equal =', date1String === date2String)

0
投票

这里的问题是var InputDate = new Date("2020-11-16 00:00:00");语句,因为InputDate将是一个对象,并且switch语句适用于原始数据类型。

© www.soinside.com 2019 - 2024. All rights reserved.