contar sabado y domingo en un rango de fechas con datapicker – javascript bootstrap

Pregunta:


Como puedo saber cuandos sabados y domingos hay en un rango de fechas
01-01-2017 & 20-01-2017 (por ejemplo), sabiendo que datapicker (bootstrap) tiene un

arreglo que toma =>
domingo[0] [lunes[1] martes[2] miercoles[3] jueves[4] viernes[5] sabado[6]

Preguntado por: matteo

cnbandicoot

Aquí tienes una solución:

function cuentaFindes(){
    var inicio = new Date("2017-02-24"); //Fecha inicial
    var fin = new Date("2017-03-10"); //Fecha final
    var timeDiff = Math.abs(fin.getTime() - inicio.getTime());
    var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24)); //Días entre las dos fechas
    var cuentaFinde = 0; //Número de Sábados y Domingos
    var array = new Array(diffDays);

    for (var i=0; i < diffDays; i++) 
    {
        //0 => Domingo - 6 => Sábado
        if (inicio.getDay() == 0 || inicio.getDay() == 6) {
            cuentaFinde++;
        }
        inicio.setDate(inicio.getDate() + 1);
    }

   return cuentaFinde;
}

Esto creo que seria lo que buscas:

Recordar que la semana cuenta desde 0; Domingo =0 y Sábado =6

function contadorSabadosYDomingos(fechaInicial,fechaFinal){
fechaInicial = fechaInicial.split("-");
fechaFinal = fechaFinal.split("-");

var dtInicial = new Date(fechaInicial[2], fechaInicial[1] - 1, fechaInicial[0]);
var dtFinal =new Date(fechaFinal[2], fechaFinal[1] - 1, fechaFinal[0]);

var contadorDias = 0;
while(dtInicial <=dtFinal){
    if(dtInicial.getDay()===0||dtInicial.getDay()===6){
     console.log("dia contado:"+dtInicial);
     contadorDias++;
    }
dtInicial = new Date(dtInicial.getTime()+86400000);// se agrega un dia

}
return contadorDias;
}

Otra solución seria que asignes en una variable la fecha de inicio, haces un ciclo de repetición donde le vas a ir sumando un día a esa variable y vas a ir preguntando si la fecha es sábado, de ser así le agregas un +1 al contador, el ciclo termina cuando la fecha que le estas agregando un día llega a la fecha de fin. Te quedaría algo así en C#, tendrías que pasarlo no mas

public int DiasSabados(DateTime inicio, DateTime fin)
    {
        int contadorSabados = 0;
        while (inicio < fin)
        { 
            if ( inicio.DayOfWeek == DayOfWeek.Saturday)
            {
                contadorSabados++;
            } 
        inicio = inicio.AddDays(1);
        }
         return contadorSabados;
    }

JavaScript

while(inicio < fin) 
{
    if (inicio.getDay() == saturday)
    {
        contadorSabados++;
    }
    inicio.setDate(inicio.getDate() + 1);
}

Fuente

Add a Comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *