這篇文章主要介紹了使用JavaScript怎么將公歷轉(zhuǎn)換成農(nóng)歷,此處通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考價(jià)值,需要的朋友可以參考下:
成都創(chuàng)新互聯(lián)是專業(yè)的羅湖網(wǎng)站建設(shè)公司,羅湖接單;提供成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行羅湖網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!
公歷轉(zhuǎn)農(nóng)歷 要保存一年的信息,其實(shí)只要兩個(gè)信息就可以了:1.農(nóng)歷每個(gè)月的大小?
2.今年是否有閏月.
3.閏幾月以及閏月的大小.
用一個(gè)整數(shù)來(lái)保存這些信息就足夠了.
具體的方法是:用一位來(lái)表示一個(gè)月的大?
笤錄俏?,小月記為0,這樣就用掉12 位(無(wú)閏月)或13 位(有閏月),再用高4位來(lái)表示閏月的月份,沒(méi)有閏月記為0.
比如說(shuō),2 0 0 0 年的信息數(shù)據(jù)是0 x C 9 6 ,化成二進(jìn)制就是110010010110B,表示的含義是指1、2、5、8、10、11月大,其余月小.
2001 年的農(nóng)歷信息數(shù)據(jù)是0x41A95,其中4表示今年閏4月,月份大小信息就是0x1A95(因?yàn)殚c月,所以有13 位),具體的就是1、2、4、5、8、10、12月大,其余月份?
?x1A95=1101010010101B),4月的后面那一個(gè)0表示的是閏4月?
幼諾哪歉?表示5月大.
這樣就可以用一個(gè)數(shù)組來(lái)保存這些信息.
在我的JavaScript腳本程序中是用CalendarData[]這個(gè)數(shù)組來(lái)保存這些信息的.
下面就是公歷轉(zhuǎn)換成農(nóng)歷的具體算法:1.計(jì)算出所求時(shí)間到起始年正月初一的天數(shù).
2.從起始年份開(kāi)始,減去每一月的天數(shù),一直到剩余天數(shù)沒(méi)有下一個(gè)月多為止.
此時(shí),CalendarData[]的下標(biāo)到了多少,就是減去了多少年,用起始年份加上這個(gè)下標(biāo)就可以得到農(nóng)歷年份,然后看減去了幾個(gè)月.
如果本年不閏月或者閏月還在后面,就可以直接得到農(nóng)歷月份,如果在閏月月份數(shù)后面一個(gè)月,則這個(gè)月就是閏月,如果在閏月的后面,則要減去1 才能得到月份數(shù).
剩余的天數(shù)就是農(nóng)歷日,農(nóng)歷時(shí)用(公歷時(shí)+1)/2 就可以簡(jiǎn)單地得到了.
到此這篇關(guān)于使用JavaScript怎么將公歷轉(zhuǎn)換成農(nóng)歷的文章就介紹到這了,更多相關(guān)內(nèi)容請(qǐng)搜索創(chuàng)新互聯(lián)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持創(chuàng)新互聯(lián)!