Javascript判断是否是闰年

计算自己出生那天是该年当中的第几天。效果如下
图片描述

//声明年的函数
function year(argument) {
    while(true){
        var year=parseInt(prompt("请输入您的出生年份"));
        if (isNaN(year)) {
            alert("对不起,请输入数字!");
        } else {
            if (year<0) {
                alert("对不起年份不能小于公元元年");
            } else {
                break;
            }
        }        
    }
}
//声明月份的函数
function month(argument) {
    while(true){
        var month=parseInt(prompt("请输入您的出生月份"));
        if (isNaN(month)) {
            alert("对不起,请输入数字!");
        } else {
            if (month<1 ||month>12) {
                alert("请输入1-12之间的月份");
            } else {
                break;
            }
        }        
    }
}
//声明日期的函数
function days(argument) {
    while(true){
        var days=parseInt(prompt("请输入您的出生日期"));
        if (isNaN(days)) {
            alert("对不起,请输入数字!");
        } else {
            if (days<1||days>31) {
                alert("请输入1-30 之间的日期")
            } else {
                break;
            }
        }
    }
}
year();
month();
days();

var runNian=(year%4==0 && year%100!=0) || year%400==0;
var months=[31,28,31,30,31,30,31,31,30,31,30,31];

之后就写不出来了,一点思路也没有,。。。。。。。

阅读 5.2k
4 个回答

活用Date对象: 拿当年第一天跟当年生日做相减。再加一不就可以了?


var birth = new Date('1990/1/28');
var start = new Date('1990/1/1');
var res = (birth.getTime()-start.getTime())/1000/60/60/24 +1;

1.

year();
month();
days();

这几个是输入框的选择项.
2.
var runNian=(year%4==0 && year%100!=0) || year%400==0;
这个是判断闰年通用的方法
3.

for(var i=0; i<month-1; i++){ 
    sum+=months[i]; 
} 

//将输入的月份之前的月份求和。
比如你输入5月,则计算前4个月的总天数。

if(runNian && months>2){ 
    sum+=day+1; 
}else{ 
    sum+=day; 
}

//如果是闰年,并且输入的月份大于2,因为预先定义了var months=[31,28,31,30,31,30,31,31,30,31,30,31];
2月定义了是28天,而闰年2月29天,所以是自己的出生天数再加一天。

其他的情况也就直接加自己的出生天数就可以了。

// 获取你的生日是在该年的第几天
function getDayOfYear (dateStr) {
    var date = new Date(dateStr);
    var first = new Date(date.getFullYear(), 0, 1);
    var diff = date.getTime() - first.getTime();
    return getDay(diff) + 1;
}


function getDay(milliseconds) {
    return parseInt(milliseconds / 1000 / 3600 / 24)
}

getDayOfYear('1996-03-01')  // 测试闰年
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题