I want to display the days of the week based on the days in a month. Now it is the case that Sunday is always counted twice. However, when I open the debugger and set a breakpoint in the for loop, the "0" for Sunday is only counted once. How so ?
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;
};
>Solution :
Try like this:
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;
}
