我正在制作这个简单的日历: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>");
}
}
答案 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>");
}
}