

function onCheck(){ 
var Year = document.getElementById("year").value; //获取文本框的“年” var theYear =Year * 1; //转换为number类型 //alert(theYear); // 获取月值 
var month = document.getElementById("month"); 
var index1=month.selectedIndex; var theMonth = month.options[index1].value; //获取月值 
var day = document.getElementById("day"); 
var index2=day.selectedIndex; 
var theDay = day.options[index2].value;
// 输入值判断部分
...
//调用核心函数
days(theYear,theMonth,theDay); 
}核心函数days如下:
function days(year,month,day) { 
 var days = 0; //表示改日期为当年的第几天
 //累加月天数
 for(var i = 1; i < month; i++ ){
 switch(i){
 //大月的情况加31
 case 1:
 case 3:
 case 5:
 case 7:
 case 8:
 case 10:
 case 12:{
 days += 31;
 break;
 }
 //小月的情况加30
 case 4:
 case 6:
 case 9:
 case 11:{
 days += 30;
 break;
 }
 //二月的情况,根据年类型来加
 case 2:{
 if(isLeapYear(year)){
 days += 29; //闰年加29
 }
 else {
 days += 28;
 }
 break;
 }
 }
}
day = day * 1;
days += day; //月天数之和加上日天数
var date0 = new Date(year,0,1); //当年的第一天是周几
// alert(date0.getDay());
 var date1 = new Date(year,month-1,day); //将日期值格式化,0-11代表1月-12月;
// alert((days + date0.getDay()+6)/7);
 var nthOfWeek = Math.floor((days + date0.getDay()+6)/7); //向下取整
// alert(nthOfWeek);
 var toDay = new Array("星期天","星期一","星期二","星期三","星期四","星期五","星期六"); 
 //day.getDay();根据Date返一个星期中的某其中0为星期日 
 alert("该日期是一年中的第"+days+"天\n"+" 是第"+nthOfWeek+"周的"+toDay[date1.getDay()]);
}调试过程中遇到了许多意外的错误,如类型的不匹配带来的计算错误,如数字的舍入问题;
在队友的协助下,他负责审核和协助抓虫子,我负责实施和编码;
在最后一个环节,对输入值的测试中,我们很好的相互协助,分析不同的输入情况,涵盖了各种可能的意外,很快的完成了功能的完善;
下面是对输入值的判断是否允许的代码 :
if (isNaN(theYear)|| theYear < 0) {
 alert("输入有误,请重新输入");
 return ;
}
if((theMonth == 2 && theDay > 29 && isLeapYear(theYear))||(theMonth == 2 && theDay > 28 && !isLeapYear(theYear))) {
 alert("输入有误,请重新输入");
 return ;
}
if((theMonth == 4 || theMonth == 6 || theMonth == 9 || theMonth == 11) && theDay == 31 ) {
 alert("输入有误,请重新输入");
 return ;
}更多js实现日历可获得指定日期周数及星期几示例分享相关文章请关注PHP中文网!
