写一个函数,输入某年某月某日,判断这一天是一年中的第几天
//输入年月日,获取这个日期是这一年的第几天
// 以3月5日为例,应该先把前两个月的加起来, 然后再加上5天即本月的第几天,特殊情况, 闰年且输入月份大于3时需考虑多加一天
var years=Number(prompt('请输入年'));
var month=Number(prompt('请输入月'));
var day=Number(prompt('请输入日'));
function getDay(years, month , day){
//天数
var days=day;
if (month == 1) { //如果月份为一月那 直接输出天数 跳出循环
return days;
}
//判断月数
//不是一月的话累加之前的月数加上当月的天数 months
var months=[31,28,31,30,31,30,31,31,30,31,30,31];
for (var i=0;i<month-1;i++) { //第几天和之前所有天数和
days += months[i];
}
if (isRn(years) && month>2) { //判断输入的是否是闰年 与大于2月 是的天数加一 否则跳出循环
days++; //加一天
}
return days;
}
function isRn(num) { //判断是否是闰年【能被4整除且不能被100整除,或者能被400整除】
return num % 4 == 0 && num % 100 != 0 || num % 400 == 0;
}
document.write('今天是今年的第'+getDay(years, month , day)+'天');
如果要去掉上面三个输入,运行的话必须在下面更改底部代码 按年月日 输入具体值
document.write(‘今天是今年的第’+getDay(years, month , day)+’天’);
如document.write(‘今天是今年的第’+getDay(2000, 3 , 2)+’天’);
方法二
function pingrun(year){
if(year%4==0&&year%100!=0 || year%400 ==0){
return 29
}else{
return 28
}
}
function getDays(year,month,day){
// 1,3,5,7,8,10,12 =31`t``s
// 4,6,9,11 =30
// 2=28/29
var result = pingrun(year)
var sumDays = day;
var monthDays = [0,31,result,31,30,31,30,31,31,30,31,30]
for(var i = 0; i<month; i++){
sumDays+=monthDays[i];
}
return sumDays;
}
var days = getDays(2020,12,10)
console.log(days);
sw方法三
function isRun(yer) {
var rest = false;
if ((yer % 4 === 0 && yer % 100 !== 0) || (yer % 400 === 0)) {
return rest = true;
}
}
function get_day(yer, moth, day) {
var days = day;
for (var i = 1; i < moth; 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 (isRun(yer)) {
days += 29;
}else {
days += 28;
}
break;
}
}
return days;
}
var yer = Number(prompt("请输入多少年:"));
var moth = Number(prompt("请输入月份:"));
var day = Number(prompt("请输入几号:"));
var n1 = get_day(yer,moth,day);
document.write(n1);