Quiero mostrar los días de la semana en función de los días de un mes. Ahora bien, sucede que el domingo siempre se cuenta dos veces. Sin embargo, cuando abro el depurador y establezco un punto de interrupción en el ciclo for, el "0" para el domingo solo se cuenta una vez. Cómo es eso ?
function getDayName(dateStr, locale) { var date = new Date(dateStr); return date.toLocaleDateString(locale, { weekday: "long" }); } const Items = () => { let array = []; const d = new Date(); let tageImMonat = daysInMonth(d.getMonth() + 1, d.getFullYear()); for (var i = 1; i <= tageImMonat; i++) { var newDate = new Date(d.getFullYear(), d.getMonth(), i); var day = getDayName(newDate, "de-DE"); if (newDate.getDay() === 0) { //if Sunday array.push( <Item sx={{ backgroundColor: "red", textAlign: "left" }}> {i} {day} </Item> ); } if (newDate.getDay() === 6) { //if Saturday array.push( <Item sx={{ backgroundColor: "lightgrey", textAlign: "left" }}> {i} {day} </Item> ); } else if (newDate.getDay() !== 0 || newDate.getDay() !== 6) { array.push( <Item sx={{ textAlign: "left" }}> {i} {day} </Item> ); } } return array; };Prueba así:
function getDayName(dateStr, locale) { var date = new Date(dateStr); return date.toLocaleDateString(locale, { weekday: "long" }); } function Items() { const array = []; const d = new Date(); const tageImMonat = daysInMonth(d.getMonth() + 1, d.getFullYear()); for (let i = 1; i <= tageImMonat; i++) { const newDate = new Date(d.getFullYear(), d.getMonth(), i); const day = getDayName(newDate, "de-DE"); switch (newDate.getDay()) { case 0: //if Sunday array.push( <Item sx={{ backgroundColor: "red", textAlign: "left" }}> {i} {day} </Item> ); break; case 6: //if Saturday array.push( <Item sx={{ backgroundColor: "lightgrey", textAlign: "left" }}> {i} {day} </Item> ); break; default: array.push( <Item sx={{ textAlign: "left" }}> {i} {day} </Item> ); } } return array; }