JavaScript - Ayuda!! Como determinar los días del mes

   
Vista:

Ayuda!! Como determinar los días del mes

Publicado por Rafael (1 intervención) el 08/05/2017 03:46:49
BUENAS TARDES A TODOS, ANTES QUE NADA AGRADEZCO QUE HAYAN VISTO MI POST.
QUIERO SABER COMO PUEDO DETERMINAR LOS DÍAS DEL MES MEDIANTE UN RANGO DE FECHAS.

ENTRARÉ EN DETALLE.

NECESITO LLENAR UNA TABLA HTML CON LOS DÍAS DEL MES MEDIANTE UN RANGO DE FECHAS. EJEMPLO:

SELECCIONO EN MI RANGO DE FECHA DESDE EL "5-ENE-2017" AL "10-MAR-2017"

CUANDO OPRIMA EL BOTON VER DEBERIAN DE APARECER 3 TABLAS:

UNA PARA ENERO (31 DIAS)
UNA PARA FEBRERO (28 DIAS)
Y POR ULTIMO UNA PARA MARZO (31 DIAS) LAS 3 TABLAS CON TODOS SUS DIAS CORRESPONDIENTES.

SI SE PUEDE HACER EN PHP O CON JQUERY ESTARIA GENIAL.

GRACIAS. SALUDOS


dias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de kip

Ayuda!! Como determinar los días del mes

Publicado por kip (102 intervenciones) el 08/05/2017 05:29:15
Hola, he hecho algo sencillo a ver si es lo que buscas, una funcion que arma unas tablas segun los meses con los dias de estos en el rango adecuado:

1
fecha_a_fecha('08/16/2017', '09/18/2017');

Puedes probarlo aqui: https://jsfiddle.net/7oe1xntu/1/

DIV al cual sera el destino de las tablas:
1
<div id="tb"></div>

Codigo JS, este debe ir antes del cierre del tag del body:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
function fecha_a_fecha(fecha1, fecha2) {
    var f1 = new Date(fecha1);
    var f2 = new Date(fecha2);
    var month = f1.getFullYear() + " - " + (f1.getMonth() + 1);
    var tables = {};
    var temp;
    var html = "";
    var days = ['D', 'L', 'M', 'M', 'J', 'V', 'S'];
    tables[month] = {days: [], nums: []};
    while (true) {
        temp = f1.getFullYear() + " - " + (f1.getMonth() + 1);
        if (month !== temp) {
            month = f1.getFullYear() + " - " + (f1.getMonth() + 1);
            tables[month] = {days: [], nums: []};
        }
        if (f1.getTime() === f2.getTime()) {
            temp = "<td>" + f1.getDate() + "</td>";
            tables[month].nums.push(temp);
            temp = "<td>" + days[f1.getDay()] + "</td>";
            tables[month].days.push(temp);
            break;
        } else {
            temp = "<td>" + f1.getDate() + "</td>";
            tables[month].nums.push(temp);
            temp = "<td>" + days[f1.getDay()] + "</td>";
            tables[month].days.push(temp);
        }
        f1.setDate(f1.getDate() + 1);
    }
    for (var i in tables) {
        temp = tables[i].days.length;
        html += "<table><tr><th colspan='" + temp + "'>" + i + "</tr></th><tr>";
        tables[i].days.map(function(item) {
           html += item;
        });
        html += "</tr><tr>";
        tables[i].nums.map(function(item) {
           html += item;
        });
        html += "<br>";
    }
    return html;
}
 
var tables = fecha_a_fecha('08/16/2017', '09/18/2017');
 
document.querySelector('#tb').innerHTML = tables;

Y por ultimo algo de estilo sencillo:

1
2
3
4
5
6
7
table {
    border-collapse: collapse;
}
 
table, th, td {
    border: 1px solid black;
}


Es algo muy basico pero puedes usarlo para empezar.

Recuerda que si quieres obtenerlo desde un input, puedes primero obtener los valores de ambas fechas y luego se los envias a la funcion, el formato que se aceptan son los siguientes https://www.w3schools.com/js/js_date_formats.asp

Aunque yo prefiero mm/dd/yyyy asi no tendras problemas con la zona horaria.

Aunque creo que quizas por PHP puede resultar mas sencillo......
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Revisar política de publicidad