Я просмотрел кодекс, который вы прикрепили, и прошел каждую часть кода, где упоминается воскресенье, и изменил его, чтобы он стал таким: https://codepen.io/naguibihab/pen/aKMYpB
Вот изменения, которые я сделал: https://github.com/naguibihab/js-goodies/commit/aa14d87eea68860650aee3383b458a0b00fb64a9
Я объясню, почему я делал каждое изменение, это возвращает меня в те дни, когда я учился в колледже, где я должен объяснить свой код, так что терпите меня:
1:
this.DaysOfWeek = [
'Mon',
'Tue',
'Wed',
'Thu',
'Fri',
'Sat',
'Sun'
];
Это заголовок строки заголовка в календаре, просто текст, логика там не меняется
2: firstDayOfMonth = 6
Ваш первый день месяца теперь понедельник, а не воскресенье, вы также можете написать , firstDayOfMonth = new Date(y, m, 7).getDay()
, чтобы получить тот же результат, но я думаю, что первый делает его немного более понятным для читателя, так как мы всегда будем получать 6
3: if ( dow == 1 ) {
начать новую строку в понедельник вместо воскресенья
4: if ( dow == 0 ) {
закрыть строку в воскресенье вместо субботы
5: for(dow; dow < 7; dow++) {
«не текущие» цифры следующего месяца могут доходить до воскресенья, поэтому нам нужна дополнительная итерация (возможно, есть лучший способ сделать это без увеличения итераций, но мне лень это вычислять сейчас)
В основном это концепция «попытаться что-то изменить и посмотреть, что происходит», так что я пробежался по каждой области, где, как я подозреваю, воскресенье влияет на код, и попытался изменить его, чтобы увидеть что происходит.
Дайте мне знать в комментариях, если это не имеет достаточного смысла.