6 个回答

我找到的结合自己思考的结果

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>arguments</title>
</head>
<body>
<script type="text/javascript">
    //弹出年、月、日输入框,声明年鱼儿,并赋值
    var y =parseInt(prompt("请输入你的出生年份"));
    var m = parseInt(prompt("请输入你的出生月份"));
    var d =parseInt(prompt("请输入你的出生日期"));
    //月
    //求各月份数字之和
    var getMonth=new Array(31,28,31,30,31,30,31,31,30,31,30);
    var sum1=0,i;
    for(i=0;i<m-1;i++){
        sum1+=getMonth[i]
        }

    //年
    //判断年是否为闰年,是且大于2月份加一
        if(( y%400 ==0||(y % 4 == 0&& y%100 !=0))&& m > 2){
            sum=sum1 + d +1;
            document.write("该天为一年中的第"+sum+"天");
        }else{
            sum=sum1+d;
            document.write("该天为一年中的第"+sum+"天");
        }   
</script>
</body>
</html>

以后会多百度,之前浪费谁时间了在此say-sorry

提问前,先确定是:

  • 自己无法独立解决,已经做过很多尝试

  • 搜索引擎没有满意答案(google 起码过四页)

  • 本站站内搜索不到满意答案

自己解决问题的独立性一定要培养出来,多做尝试以避免其他人在你的问题上可能浪费的时间,同时请不要轻易放弃 Google。

SegmentFault帮助中心:1. 提问时该注意的事项,什么样的问题才是受欢迎的


补充:

楼主提供了一种经典算法,适用于各种语言。
我再提供一种基于JavaScript Date对象的思路供参考:

将输入的时间作为终止时间,前一年的最后一天作为起始时间。两者做差,计算出间隔时间。

var endDate = new Date(y, m-1, d),
    startDate = new Date(y, 0, 0),
    days = (endDate - startDate) / 1000 / 60 / 60 / 24;

document.write("该天为一年中的第"+ days +"天");

用moment.js

var d1 = new Date(“20161111”);
var d2 = new Date(d1.getFullyear());
var day = 3600000 * 24;
var res = parseInt((d1-d2)/day);

这还用问,自己算也不复杂呀,程序员的价值是在于解决问题,不是让别人给你解决问题。
言归正传,给你个简单的思路,可能不是最简单的,没细想,别太较真。
1,年份算是否是闰年,确认2月份的天数
2,得到每个月的天数,可以放数组里
3,根据月份得到当前月份的天数
4,根据日期加3得到的天数就ok了。

程序员一定要多动脑!!!

要多动脑啊 逻辑对了就可以了 这个肯定没有伸手得

var now = new Date();//输入日期以今日为例
var NewYearsDay = new Date(now.getFullYear(), 0, 0, 0, 0, 0);//该年第一天
console.log((now.getTime()-NewYearsDay.getTime())/86400000>>>0)//算出两者的时间戳之差就是时间差的微秒数  再用时间差除以天的微秒数86400000 取整 就是第几天
推荐问题
宣传栏