根据自己输入出生年月日,然后得到对应的是该年的第几天。我们都知道年分为平年和闰年,闰年的2月份为29天,平年的2月份为28天。平年和闰年的判断为:可被4整除,但是整百的年数必须是可以被400整除的才是闰年。用代码表示就是(year%4==0 && year%100!=0 || year%400==0)为true的时候,就是闰年。接着7、8月份的问题,因为7、8月份都是31天,如果我们不想一个月一个月的取值得话,那就可以这样:首先我们可以假设2月份有30天,然后进行一个闰年或者平年的判断,对天数进行-1或者-2操作。经过发现,1-7月份,如果按照31天计为大,30天计为小,那么1-7月份就可以表示为:大小大小大小大,然后8-12月份,也可以表示为大小大小大。相当于就是7月和8月作为一个分界线,我们通过计算有多少个31天多少个30天得到最后的答案。接着我们进行一个月份的判定,如果月份小于或者等于8月(为什要等于8月份呢,因为等于8月份,那么7月就是完整的31天,然后加上对应的天数就行了,如果只是小于8月份,那么最多只能是7月份的最后一天,分界的后面一部分就相应的变为7-12,就成为了大大小大小大,规律就不好找了)(更浅显地说就是7月8月作为一个分界线,当前月不能在总的天数上加30或者31,只能加对应输入的号数;举个例子:如果我输入1996 2 1,那么我只能是加前一个到一月份对应的天数,再加当前月份的日期,即就是只能加上一月份的31天,然后再加二月份的日期1)。如果当前月是小于等于8,先计算出有多少个31天的月份(不包括本月),使用(当前月-1)/2,然后向上取整(1.2就变成2),就能得到有31天的月份数量,再计算有30天的月份数,(当前月-1)/2,向下取整(1.8变成1)。最后在判断输入的月份大于2的话,就要对当前的月份进行-1或者-2的处理,反之不用处理。如果当前月是大于8,先计算出有多少个31天的月份(不包括本月),使用(当前月-8)/2,然后向上取整(1.2就变成2)再加上4(因为之前1-7月份,就有4个31天),就能得到有31天的月份数量,再计算有30天的月份数,(当前月-8)/2,向下取整(1.8变成1),最后加上3(因为之前1-7月份,就有3个30天)。最后就要对当前的月份进行-1或者-2的处理。源代码如下:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Document</title></head><body> <script> var year=0, month=0, day=0; //riqi函数用于将出生日期转换为对应年份的天数 function riqi(year1,month1,day1){ var total=0; var num1=0; var num2=0; if(month1<=8){ num1=Math.ceil((month1-1)/2); total=num1*31; num1=Math.floor((month1-1)/2); total+=num1*30; }else{ num2+=(Math.ceil((month1-8)/2)+4); total=num2*31; num2=(Math.floor((month1-8)/2)+3); total+=num2*30; } if(month1>2){ if(year1%4==0 && year1%100!=0 || year1%400==0){ --total; }else{ total-=2; } } document.write("您的生日是"+year1+"年的第"+(total+day1)+"天"+"</br>"); } //ymd函数用于出生日期的获取 function ymd(){ year=parseInt(PRompt("请输入您的出生年份")); month=parseInt(prompt("请输入您的出生月份")); day=parseInt(prompt("请输入您的出生日期")); } ymd(); riqi(year,month,day); </script></body></html>
新闻热点
疑难解答