不是每个月都从星期一开始

时间:2014-12-02 19:17:09

标签: javascript

我正在制作这个简单的日历:http://jsfiddle.net/ro0wnpus/  但不是每个月都以星期一为第一次开始。 我的问题是如何找出这个月的第一个日期?

这是绘制一个月内日期的函数:

function drawDays() {
    var position = document.getElementById("daysContainer");
    var element = "<div id='cell'>";
    var numDays = getNumberOfDays(month);

    for (var i = 0; i < numDays; i++) {
        position.innerHTML += (element + (i+1) + "</div>");
    }
}

3 个答案:

答案 0 :(得分:2)

var dt = new Date(); // create a date, default = today
dt.setDate(1);      // change date so it's the 1st of the month
alert(dt.getDay()); // get day-of-week, 0 = sunday ->  6 = saturday.

答案 1 :(得分:1)

尝试这样的事情......

var year = "2014";
var month = "12";
var day = new Date(year + "-" + month + "-01").getDay()

由于您从1开始计算,而星期一是一周的第一天,您还必须这样做:

day = (day===0) ? 7 : day

答案 2 :(得分:0)

编辑你的JSFiddle:http://jsfiddle.net/ro0wnpus/

以下是我改变的事情。

使用getDay()找到一周的哪一天是第一天,并添加了一个新的var计数,它将跟踪循环中的日期。 getDay()给出了一个0到6之间的整数,对应于星期日到星期一。

var firstDay = new Date(year, month, 1).getDay();
var count = 1;

将第一天添加到该月的总天数,因为我们现在需要循环更多日期

var numDays = getNumberOfDays(month)+firstDay;

更改循环以检查我们何时到达第一天,如果我们还没有,请将该位置留空

for (var i = 1; i < numDays; i++) {
    if(i >= firstDay){
        position.innerHTML += (element + (count) + "</div>");
        count++;
    }else{
        position.innerHTML += (element + "" + "</div>");
    }
}