首页 > 解决方案 > 如何将日历的开始日期布局从星期日更改为星期一?

问题描述

嗨,我正在尝试从作者 xMark 的这个日历示例代码中学习 JavaScript。但他的示例使用星期日作为一周的第一天。我希望它显示星期一为一周的第一天。到目前为止,我只设法更改了标题标签,但没有更改日期的正确位置。 https://codepen.io/xmark/pen/WQaXdv

所以我一直在试图理解在他的代码中我可以让日期向左移动一步。但我无法弄清楚这种转变应该发生在代码中的哪个位置。

我最卡住Calendar.prototype.showMonth = function(y, m) {...}的部分是我认为需要改变的部分。在这个函数中我不明白为什么作者var k = lastDay_of_LastMonth - firstDay_of_Month+1;在最后一个变量上加了+1?

var k = ...我完全迷失之后。每当我试图改变事情时,整个日历就会崩溃。

@纳吉布

var d7 = new Date(2018, 6, 1);
d7
"Sun Jul 01 2018" 00:00:00 GMT+0200 (Central European Summer Time)
 
var firstDay_of_Month = new Date(2018, 6, 1).getDay();
firstDay_of_Month
0 // July 1st is on a Sunday.
 
//_________________________________________________________________
 
var d8 = new Date(2018, 7, 1);
d8
"Wed Aug 01 2018" 00:00:00 GMT+0200 (Central European Summer Time)
 
var firstDay_of_Month = new Date(2018, 7, 1).getDay();
firstDay_of_Month
3 // August 1st is on a Wednesday.
 
//_________________________________________________________________
 
var dNaguib = new Date(2018, 6, 7);
dNaguib
"Sat Jul 07 2018" 00:00:00 GMT+0200 (Central European Summer Time)
 
var dNaguib = new Date(2018, 6, 7).getDay();
dNaguib
6 // July 7th is on a Saturday.
 
 
// Why then does this dynamic code looking for the 7th each month
// make everything in the calendar work?
var firstDay_of_Month = new Date(y, m, 7).getDay(); // Naguib


// While the original code looking for the 1st each month make
// some months break the calendar?
var firstDay_of_Month = new Date(y, m, 1).getDay(); // Original

标签: javascriptdatecalendar

解决方案


查看Nikhil Talreja 的代码。它应该让您了解如何让日历以星期一作为开始日期。另外,请查看类似的问题。

本质上,他使用了一些 for 循环和标签,例如:

cal_days_labels = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat','Sun'];

for (var j = 1; j <= 7; j++)

该项目与我想象的您的项目相似,因此希望这会有所帮助。


推荐阅读