我正在努力让这个代码为我工作:
https://codepen.io/bbarry/pen/Eopdk
我想日历周一开始。我已经改变了日子:[]从Sa So到Mo Su在.js.
但这只会改变标题。日期仍然错误,12月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 && (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++)
,但我无法修复它。
for (i = 0; i < 7; i++)
只打印7个标题单元格,迭代数组days
并打印单元格中的数组值。正如您所看到的,这不会影响日期。您需要处理日期对象。
html文件中有两个日期对象:一个用于月视图,另一个用于周视图和日视图。
月视图
日期对象在html文件的第12行实例化:
first = new Date(year, month, 1),
这意味着新的日期对象,传递参数year(上面定义为当年(和month(上面定义的为当年(。第三个论点是将一个月的哪一天视为该月的第一天。设置此参数0。
first = new Date(year, month, 0),
周视图
日期对象在html文件的第20行实例化:
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