1. 分析
1. まず、その年が閏年なのか平年なのかを知る必要があります。
2. 次に、ユーザーが入力した月が 1 月であるかどうかを判断し、1 月である場合は日数を直接返します。そうでない場合は、最初に前の月の合計日数を計算します (ここでは 2 月を 28 日に設定します)。次に、その月の何日かの日を追加します
3. ユーザーが入力した月が 2 より大きく、年が閏年の場合は、さらに 1 日追加する必要があります。
2. ソースコード
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>输入年月日判断该天是一年中的第几天</title>
</head>
<body>
<script type="text/javascript">
//需要判断这个年份是不是闰年
function isLeapYear(year){
return year%4==0&&year%100!=0||year%400==0;
};
function getDays(year, month,day) {
//定义变量存储对应的天数
var days = day;
//如果用户输入的是一月份,没必要向后算天数,直接返回天数
if (month == 1) {
return days;
};
//代码执行到这里说明用户输入的不是1月份
//定义一个数组,存储每个月份的天数
var months = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
//小于的是输入的月份-1
for (var i = 0; i < month - 1; i++) {
days += months[i];
};
//需要判断这个年份是不是闰年 如果是闰年并且输入月份大于2就加一天
if(isLeapYear(year) && month>2){
days++;
};
return days;
};
console.log(getDays(2020,3,5));//结果为65
</script>
</body>
</html>