<script>
var year=prompt("请输入年份:");
var month=prompt("请输入月份:");
var allDay=0;
//计算输入的年份距离1900年的天数
for(var i=1900;i<=year;i++){
if((i%4==0&&i%100!=0)||i%400==0){
allDay+=366;
}else{
allDay+=365;
}
}
//当月天数的总数
var monthDay=0;
for(var i=1;i<=month;i++){
switch(i){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
monthDay=31;
break;
case 2:
if((year%4==0&&year%100!=0)||year%400==0){
monthDay=29;
}else{
monthDay=28;
}
break;
case 4:
case 6:
case 9:
case 11:
monthDay=30;
break;
}
}
//用总天数算出当月1号的星期数
var day=allDay%7;
console.log(day);
//画出日期排布
document.write("一 二 三 四 五 六 日<br/>");
for(var i=1;i<day;i++){
document.write(" ");
}
for(var i=1;i<=monthDay;i++){
document.write(i+" ");
if((i+day)%7==0){
document.write("<br/>");
}
}
为什么“用总天数算出当月1号的星期数”这步总是不对?
获得该月1号为星期几的地方改为以下代码:
//得出该月一号为星期几
var day = new Date(year + '/' + month + '/' + '01').getDay();
if (day === 0) {
day = 7
}
另外你还有个地方有问题
循环里 判断换行的位置改为:
if ((i - 1 + day) % 7 == 0)
如果能帮到你,望【采纳】谢啦
var monthDay = 0下面的那个for循环里 最后面是不是应该 allDay += monthDay ; for循环里的条件应该是i < month而非<=;for循环完后因为是当月1号,还需要allDay++;
另外,allDay%7 算出的是当天是星期几,星期数应该是allDay/7吧?