根據自己輸入出生年月日,然后得到對應的是該年的第幾天。我們都知道年分為平年和閏年,閏年的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>
新聞熱點
疑難解答