應為要有交互,選擇了Js來實現,也算是 結對程式設計 的初試吧。 我將顯示部分用html 寫好,點擊的按鈕觸發事件函數是check();
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中文網!