«bootstrap compatable calendar» не запускается в понедельник

#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. Большое спасибо за ваш ответ! Больше всего спасибо за объяснение, чтобы я мог понять решение моей проблемы!