閏年的計算

2021-06-19 11:50:42 字數 1025 閱讀 9235

作為乙個程式設計師,有時會碰到閏年的判斷,那麼到底神馬是閏年呢,又為什麼會有閏年這種說法呢。下面資料摘至wiki:

閏年是比普通年份多出一段時間的年份,在各種曆法中都有出現,目的是為了彌補人為規定的紀年與地球公轉產生的差異。

若以陽曆為例,「年」的計算基礎是回歸年,而乙個回歸年大約等於365.24220日。因為在平年西曆只計算365日,結果四年後便會累積0.24220×4=0.9688日,大約等於一日,所以便逢四年增加一日閏日以抵銷這0.9688日。 然而,累積4年後多的0.96876天,與真正的1日尚差0.03124天,故如果不間斷地按照4年1閏的方式修正,百年後將累積成365×100+25=36525日,比真正的1世紀日數365.24219×100=36524.219多。因此歷法學家便重新規定閏年的規則為:西元年份逢4的倍數閏、100的倍數不閏、400的倍數閏、4000的倍數不閏。例如:公元1992、2023年等為4的倍數,故為閏年;公元1800、1900、2023年為100的倍數,當年不閏;公元1600、2000、2023年為400的倍數,有閏;而公元4000、2023年為4000的倍數,則不閏。

目前使用的格里曆閏年規則如下:

1.西元年份除以400可整除,為閏年。

2.西元年份除以4可整除並且除以100不可整除,為閏年。

3.西元年份除以4不可整除,為平年。

4.西元年份除以100可整除並且除以400不可整除,為平年

演算法:

if (西元年份是400的倍數)閏年

else if (西元年份是4的倍數&&西元年份不是100的倍數) 閏年

else 平年

每逢閏年,2月份有29日,平年的2月份為28日。

因此,2023年為平年,2023年逢4的倍數為閏年,2023年逢100的倍數但非400的倍數故為平年,2023年逢400的倍數又為閏年。

此外,如依照現有太陽年的長度與上述閏年規則,每2023年又約差一日,因此約翰·赫歇爾提議每逢4000的倍數不閏,如公元2023年。但距此一年份來臨尚有約二千年之遙,因此還未曾真正納入規則或實施過。又由於地球公轉速率的不穩定與眾多影響因素,屆時是否需要納入此規則仍有疑問。

閏年的計算由來?

1 閏年 leap year 是為了彌補因人為曆法規定造成的年度天數與地球實際公轉週期的時間差而 設立的。地球繞太陽執行週期為365天5小時48分46秒 合365.24219天 即一回歸年。公曆的平年 非閏年 只有365日,比回歸年短約0.2422 日,所餘下的時間約為四年累計一天 故每四年則於2月...

計算閏年 winform

新建窗體應用程式 如下 新建控制項label1,label2,label3,textbox1,button1,button2 label1的text屬性改為 計算閏年演示 label2的text屬性改為 輸入年份 button1的text屬性改為 確定 button1的text屬性改為 退出 完整 ...

彙編 閏年計算

1 data segment 定義資料段 2 infon db 0dh,0ah,please input a year 3 y db 0dh,0ah,this is a leap year 4 n db 0dh,0ah,this is not a leap year 5 w dw 0 6 buf d...