效果:

代码:
<!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;
function getDays(){
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)+"天了";
}
function getNowYear(){
return new Date().getFullYear();
}
function getNowMonth(){
return new Date().getMonth()+1;
}
function getNowDate(){
return new Date().getDate();
}
function checkBirth(year,month,date){
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))
return false;
switch(month){
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
m_flag = 1;
if(!(date >= 1 && date <=31))
return false;
break;
case 4: case 6: case 9: case 11:
m_flag = 2;
if(!(date >= 1 && date <=30))
return false;
break;
case 2:
if(flag)
m_flag = 3;
if(!(date >= 1 && date <=29))
return false;
else
m_flag = 4;
if(!(date >= 1 && date <=28))
return false;
break;
}
return true;
}
function getDaysOfMonth(year,month){
year = parseInt(year);
month = parseInt(month);
var birthYearBirthMonth_days = 0;
switch(m_flag){
case 1: birthYearBirthMonth_days = 31; break;
case 2: birthYearBirthMonth_days = 30; break;
case 3: birthYearBirthMonth_days = 29; break;
case 4: birthYearBirthMonth_days = 28; break;
}
return birthYearBirthMonth_days;
}
function getDaysOfBirthYear(year,month,c){
var thisYearDays;
var thisMonthDays;
var days = 0;
year = parseInt(year);
month = parseInt(month);
date = eval(c);
if(year == getNowYear()){
return 0;
}
days = getDaysOfMonth(year,month) - c;
for(var i = month + 1; i <= 12; i++){
switch(i){
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
days += 31;
break;
case 4: case 6: case 9: case 11:
days += 30;
break;
case 2:
if(flag)
days += 29;
else
days += 28;
break;
}
}
return days;
}
function getDaysOfYears(year){
var days = 0;
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;
}
function getDaysOfNow(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){
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
days += 31;
break;
case 4: case 6: case 9: case 11:
days += 30;
break;
case 2:
if(aliveYearFlag)
days += 29;
else
days += 28;
break;
}
}
if(year == a && month == b){
days = c - date;
return days;
}
else if(year == a && month > b || year == a && month == b && date > c){
return 0;
}
days += c ;
return days;
}
</script>
</body>
</html>