Me pregunto si alguien me puede ayudar, he hecho todo lo posible para tratar de llegar lo más lejos posible, pero un poco de ayuda sería realmente genial, si no ayuda, solo un consejo, estoy aprendiendo lentamente.
Como consejo de alguien, he tratado de incluir la mayor cantidad posible de mi código.
Así que tengo el siguiente código
var my_dates = function(start, end) { var start = new Date(start); var end = new Date(end); var arr = new Array(); var dt = new Date(start); while (dt <= end) { arr.push(new Date(dt)); dt.setDate(dt.getDate() + 1); } return arr; } var dates_array = my_dates('2021-02-02', '2021-02-23'); y si hago console.log(dates_array ) devuelve una lista de fechas entre las dos fechas definidas, y esto es genial.
Si cree que mi código es exagerado, estoy abierto a aprender una mejor manera.
Pero lo que quería hacer es expandir esto, así que en lugar de devolver fechas entre esas 2 fechas, en el caso de febrero, devolvería todas las fechas a partir del 1 y hasta el 28.
Entonces tengo este HTML
<div id="start_dates"> <ul class="monday_dates"></ul> </div> <div id="all_dates"> <ul class="all_dates"></ul> </div> y luego usando jQuery, quería ubicar todos los lunes como <li> en .monday_dates <ul> , asumo algo como $('#start_dates .monday_dates').append()
Y luego coloque una lista completa de todas las fechas como <li> en .all_dates <ul> , asumo algo como $('#all_dates .all_dates').append()
Así que la fuente HTML se vería algo así como
<div id="start_dates"> <ul class="monday_dates"> <li class="mon">01/02/2021</li> <li class="mon">08/02/2021</li> <li class="mon">15/02/2021</li> <li class="mon">22/02/2021</li> </ul> </div> <div id="all_dates"> <ul class="all_dates"> <li class="day">01/02/2021</li> <li class="day">02/02/2021</li> <li class="day">03/02/2021</li> ... <li class="day">26/02/2021</li> <li class="day">27/02/2021</li> <li class="day">28/02/2021</li> </ul> </div>¿Alguien puede ayudar? O aconsejar.
Gracias, aprecio mucho tu tiempo.
Puede generar todas las fechas de un mes usando un ciclo while y agregar solo fechas cuyo valor de getDay() sea 1 como fechas de monday . Luego, usando append() puede agregar a su html.
const getDaysInMonth = (month, year) => { const date = new Date(year, month, 1); const days = []; const mondays = []; while (date.getMonth() === month) { const dateString = new Date(date).toLocaleDateString('en-GB') if(date.getDay() === 1) { mondays.push(dateString); } days.push(dateString); date.setDate(date.getDate() + 1); } return {days, mondays}; } const {days, mondays} = getDaysInMonth(1, 2021); const allMonday = mondays.map(monday => `<li class="mon">${monday}</li>`).join(''); const allDays = days.map(day => `<li class="day">${day}</li>`).join(''); $('#start_dates .monday_dates').append(allMonday); $('#all_dates .all_dates').append(allDays); <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> Only Mondays: <div id="start_dates"> <ul class="monday_dates"></ul> </div> All Days: <div id="all_dates"> <ul class="all_dates"></ul> </div>.getDay devuelve 1 para el lunes y respectivamente para otros días
<div id="start_dates"></div> elmRef = document.querySelector("#start_dates"); ulRef = document.createElement("ul"); for (i = 0; i < dates_array.length; i++) { if (dates_array[i].getDay() == 1) { li = document.createElement("li"); li.append(dates_array[i].toLocaleString()); ulRef.append(li) } } elmRef.append(ulRef);