#javascript #html #twitter-bootstrap #date #calendar
#javascript #HTML #twitter-bootstrap #Дата #Календарь
Вопрос:
Я пытаюсь заставить этот код работать на меня:
https://codepen.io/bbarry/pen/Eopdk
Я хочу, чтобы календарь начинался в понедельник. Я уже изменил days:[] с Sa-So на Mo-Su в файле .js.
Но это изменяет только заголовок. Даты по-прежнему неверны, 1 декабря все еще приходится на среду, но в этом году это должен быть вторник.
Я почти уверен, что проблема где-то рядом с этой частью в .html:
<thead>
<tr class="c-weeks">
{{ for (i = 0; i < 7; i ) { }}
<th class="c-name">
{{: days[i] }}
</th>
{{ } }}
</tr>
</thead>
<tbody>
{{ for (j = 0; j < 6 amp;amp; (j < 1 || mode === 'month'); j ) { }}
<tr>
{{ for (i = 0; i < 7; i ) { }}
{{ if (thedate > last) { dayclass = nextmonthcss; } else if (thedate >= first) { dayclass = thismonthcss; } }}
<td class="calendar-day {{: dayclass }} {{: thedate.toDateCssClass() }} {{: date.toDateCssClass() === thedate.toDateCssClass() ? 'selected':'' }} {{: daycss[i] }} js-cal-option" data-date="{{: thedate.toISOString() }}">
<div class="date">{{: thedate.getDate() }}</div>
{{ thedate.setDate(thedate.getDate() 1);}}
</td>
{{ } }}
</tr>
{{ } }}
</tbody>
Я уже пытался изменить цикл (i = 0; i < 7; i )
, но я не могу это исправить.
Ответ №1:
Цикл for (i = 0; i < 7; i )
в html-файле просто печатает 7 ячеек заголовка, повторяя массив days
и печатая значение массива в ячейке. Как вы уже видели, это не влияет на дату. Вам необходимо обработать объект date.
У вас есть 2 объекта даты в HTML-файле: один используется для просмотра месяца, а другой используется для просмотра недели и дня.
Просмотр месяца
Объект Date создается в строке 12 html-файла:
first = new Date(year, month, 1),
Это означает новый объект date, передающий аргументы year (выше как текущий год) и month (определенный выше как текущий год). Третий аргумент — это день месяца, который следует рассматривать как первый день месяца. Установите для этого параметра 0.
first = new Date(year, month, 0),
Просмотр недели
Объект Date создается в строке 20 html-файла:
thedate = new Date(date);
и дата устанавливается в строке 21:
thedate.setDate(date.getDate() - date.getDay());
Просто установите дату следующим образом:
thedate.setDate(date.getDate() - date.getDay() 1);
Просмотр дня: никаких изменений не требуется, поскольку вы используете тот же объект просмотра недели.
См. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/Date
Комментарии:
1. Большое спасибо за ваш ответ! Больше всего спасибо за объяснение, чтобы я мог понять решение моей проблемы!