<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<p>
你的生日:<input type="text" size="4" id="year">年
<input type="text" id="month" size="2">月
<input type="text" size="2" id="date">日
<input type="button" value="走你" onclick="getDays()">
<input type="text" id="result">
</p>
<script type="text/javascript">
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());
document.getElementById("result").value = "你已经活了" + 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) {
// 在这里检查year是否是1900年以后的。如果不是return false
if (year < 1900) {
return false;
}
// 检查month是否是1~12之间,如果不是 return false
var nian = (month > 1 && month < 12) ? true : false;
// 检查date是否是当前月的日期以内的(大月1~31,小月1~30,2月 1~28或者1~29) 如果不是return false
switch (month) {
case '4':
case '6':
case '9':
case '11':
date = 30;
break;
case '2':
if (nian == true) {
date = 29;
} else {
date = 28;
}
break;
default:
date = 31;
}
return true;
}
// 根据传入的年份和月份得到当年当月的总天数
function getDaysOfMonth(year, month) {
// 最终返回总天数
var days ;
switch (month) {
case '4':
case '6':
case '9':
case '11':
days = 30;
break;
case '2':
if (year % 400 == 0 || year % 100 != 0 && year % 4 == 0) {
days = 29;
} else {
days = 28;
}
break;
default:
days = 31;
}
return days
}
// 根据传入的年月日,计算这一年还剩多少天
function getDaysOfBirthYear(year, month, date) {
var days = 0;
// 根据data计算month这个月还剩多少天。并且加到days上。
// 循环的把month后面剩下的几个月的天数全部加上去。
// 最后返回days。
days += getDaysOfMonth(year, month) - date
for (var i = Number(month) + 1; i <= 12; i++) {
days += getDaysOfMonth(year, i.toString())
}
return days
}
// 根据传入的年份,计算传入年份到今年之前的总天数
function getDaysOfYears(year) {
var days = 0
// 循环从year开始,到 getNowYear()结束。
for (var i = Number(year) + 1; i < getNowYear(); i++) {
if (i % 400 == 0 || i % 100 != 0 && i % 4 == 0) {
days += 366;
} else {
days += 365;
}
}
return days
// 最后返回days
}
// 计算今年过去了多少天
function getDaysOfNow() {
var days = getNowDate()
for (var i = 1; i < Number(getNowMonth()); i++) {
days += getDaysOfMonth(getNowYear(), i)
}
return days
}
</script>
</body>
</html>
本文来自博客园,作者:{潇潇消消气},转载请注明原文链接:{https://www.cnblogs.com/xiaoxiaodeboke/}