<!DOCTYPE html><html><head><meta charset="utf-8"><title></title></head><body><p>
你的生日:
<input type="text" size="4" id="year">年
<input type="text" size="2" id="month">月
<input type="text" size="2" id="date">日
<input type="button" value="走你" onclick="getDays()"><input type="text" id="result"></p><script type="text/javascript">var flag;//判闰年标志位var m_flag;functiongetDays(){var year = document.getElementById("year").value;var month = document.getElementById("month").value;var date = document.getElementById("date").value;// 检验数据格式是否正确if(!checkBirth(year,month,date)){return;}var total =0;
total +=eval(getDaysOfBirthYear(year,month,date))+eval(getDaysOfYears(year))+eval(getDaysOfNow(year,month,date));
document.getElementById("result").value="你已经活了"+parseInt(total)+"天了";}// ----已经实现,提供给你用的函数 -----// 获取当前的年份functiongetNowYear(){returnnewDate().getFullYear();}// 获取当前的月份functiongetNowMonth(){returnnewDate().getMonth()+1;}// 获取当前的日期functiongetNowDate(){returnnewDate().getDate();}// -------下面是你要实现的函数 -------------// 检验数据格式functioncheckBirth(year,month,date){// 在这里检查year是否是1900年以后的。如果不是return false// 检查month是否是1~12之间,如果不是 return false// 检查date是否是当前月的日期以内的(大月1~31,小月1~30,2月 1~28或者1~29) 如果不是return false
flag =0;
m_flag =0;
year =parseInt(year);
month =parseInt(month);
date =parseInt(date);
flag = year%4==0&& year%100!=0|| year%400==0;if(year <1900||!(month >=1&& month <=12))returnfalse;switch(month){case1:case3:case5:case7:case8:case10:case12:
m_flag =1;if(!(date >=1&& date <=31))returnfalse;break;case4:case6:case9:case11:
m_flag =2;if(!(date >=1&& date <=30))returnfalse;break;case2:if(flag)//flag=1时是闰年
m_flag =3;if(!(date >=1&& date <=29))returnfalse;else
m_flag =4;if(!(date >=1&& date <=28))returnfalse;break;}returntrue;}// 根据传入的年份和月份得到当年当月的总天数functiongetDaysOfMonth(year,month){// 参考昨天的作业实现// 最终返回总天数
year =parseInt(year);
month =parseInt(month);var birthYearBirthMonth_days =0;//当年当月天数switch(m_flag){case1: birthYearBirthMonth_days =31;break;case2: birthYearBirthMonth_days =30;break;case3: birthYearBirthMonth_days =29;break;case4: birthYearBirthMonth_days =28;break;}return birthYearBirthMonth_days;}// 根据传入的年月日,计算这一年还剩多少天functiongetDaysOfBirthYear(year,month,c){var thisYearDays;var thisMonthDays;var days =0;// 判断year是否是闰年// 根据data计算month这个月还剩多少天。并且加到days上。// 循环的把month后面剩下的几个月的天数全部加上去。// 最后返回days。
year =parseInt(year);
month =parseInt(month);
date =eval(c);if(year ==getNowYear()){//你是今年出生的,只需要算今年过去多少天就行了return0;}
days =getDaysOfMonth(year,month)- c;for(var i = month +1; i <=12; i++){switch(i){case1:case3:case5:case7:case8:case10:case12:
days +=31;break;case4:case6:case9:case11:
days +=30;break;case2:if(flag)//flag=1时是闰年
days +=29;else
days +=28;break;}}return days;}// 根据传入的年份,计算传入年份到今年之前的总天数functiongetDaysOfYears(year){var days =0;// 循环从year开始,到 getNowYear()结束。var everyYear_flag =0;
year =parseInt(year)+1;for(year ; year <getNowYear();year ++){
everyYear_flag = year %4==0&& year %100!=0|| year %400==0;if(everyYear_flag){
days +=366;}else{
days +=365;}}return days;// 最后返回days}// 计算今年过去了多少天functiongetDaysOfNow(year, month, date){var a,b,c;var aliveYearFlag =0;var days =0;
a =getNowYear();
b =getNowMonth();
c =getNowDate();
aliveYearFlag = a %4==0&& a %100!=0|| a %400==0;//判当前年是否为闰年for(var i =1; i < b; i++){switch(i){case1:case3:case5:case7:case8:case10:case12:
days +=31;break;case4:case6:case9:case11:
days +=30;break;case2:if(aliveYearFlag)//flag=1时是闰年
days +=29;else
days +=28;break;}}if(year == a && month == b){
days = c - date;return days;}elseif(year == a && month > b || year == a && month == b && date > c){return0;}
days += c ;return days;}</script></body></html>