一、步骤
1.输入日期
2.判断是否是闰年
3.判断月份
4.将该月份之前的天数与输入的天数相加
5.输出该日期在本年中的天数
二、思路
闰年的2月有29天,平年的2月有28天。首先要判断输入的年份是闰年还是平年,其次判断输入的月份,将该月份前的几个月的天数相加,最后将该月份之前的天数与输入的天数相加。
三、对应代码
1.输入日期
var year = parseInt(prompt("请输入年份:"));
var month = parseInt(prompt("请输入月份:"));
var day = parseInt(prompt("请输入天数:"));
2.定义一个判断是否是闰年的函数
function leapYear(year){
if(year%4==0 && year%10!=0 || year%400==0){
return true;
}else{
return false;
}
}
3.定义一个判断输入的月份的函数,并输出该月份之前的天数
function Input(a,b){
var c = leapYear(b)
if(c){
switch(a){
case 1: return 0;break;
case 2: return 31;break;
case 3: return 60;break;
case 4: return 91;break;
case 5: return 121;break;
case 6: return 152;break;
case 7: return 182;break;
case 8: return 213;break;
case 9: return 243;break;
case 10: return 274;break;
case 11: return 304;break;
default: return 335;break;
}
}else{
switch(a){
case 1: return 0;break;
case 2: return 31;break;
case 3: return 60-1;break;
case 4: return 91-1;break;
case 5: return 121-1;break;
case 6: return 152-1;break;
case 7: return 182-1;break;
case 8: return 213-1;break;
case 9: return 243-1;break;
case 10: return 274-1;break;
case 11: return 304-1;break;
case 12: return 335-1;break;
}
}
}
4.将输出的天数与输入的天数相加
//首先看是否是闰年,其次看是几月
var afterMonthNumber = Input(month,year);
//将之前月份的天数与输入的几号相加
var sum = afterMonthNumber + day;
5.输出该日期在本年中的天数
//输出天数
document.write("这是本年的第"+sum+"天");
四、思路总结
该问题最重要的是判断该年2月是28天还是29天,之后判断该月之前的及月是31天还是30天
五、全部代码
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>给定日期,判断天数</title>
</head>
<body>
<script>
//判断是否是闰年
function leapYear(year){
if(year%4==0 && year%10!=0 || year%400==0){
return true;
}else{
return false;
}
}
function Input(a,b){
var c = leapYear(b)
if(c){
switch(a){
case 1: return 0;break;
case 2: return 31;break;
case 3: return 60;break;
case 4: return 91;break;
case 5: return 121;break;
case 6: return 152;break;
case 7: return 182;break;
case 8: return 213;break;
case 9: return 243;break;
case 10: return 274;break;
case 11: return 304;break;
default: return 335;break;
}
}else{
switch(a){
case 1: return 0;break;
case 2: return 31;break;
case 3: return 60-1;break;
case 4: return 91-1;break;
case 5: return 121-1;break;
case 6: return 152-1;break;
case 7: return 182-1;break;
case 8: return 213-1;break;
case 9: return 243-1;break;
case 10: return 274-1;break;
case 11: return 304-1;break;
case 12: return 335-1;break;
}
}
}
//1.输入天数
var year = parseInt(prompt("请输入年份:"));
var month = parseInt(prompt("请输入月份:"));
var day = parseInt(prompt("请输入天数:"));
//2.判断第几天
//首先看是否是闰年,其次看是几月
var afterMonthNumber = Input(month,year);
//将之前月份的天数与输入的几号相加
var sum = afterMonthNumber + day;
//输出天数
document.write("这是本年的第"+sum+"天");
</script>
</body>
</html>