文章出處
文章列表
作為21世紀的新青年,不會干支的程序員肯定不是一個好司機,中華文化源遠流長,古代文明令人欽佩不已,十二地支對應十二個時辰(一個時辰等于兩小時),又暗合十二生肖,每個生肖又對應著五行和陰陽屬性,五行之中又相生相克,而天干同樣有對應的五行陰陽,五行陰陽又暗合日月星辰和方位,利用占卜可以得吉兇,扯遠了,再說下去估計就變成神棍了,言歸正傳, 天干地支組成形成了古代紀年歷法。十天干和十二地支依次相配,組成六十個基本單位,兩者按固定的順序相互配合,組成了干支紀元法,為60甲子表,也就是幾時幾刻。
十大天干: 甲 乙 丙 丁 戊 己 庚 辛 壬 癸
對應編號: 1 2 3 4 5 6 7 8 9 10
十二地支: 子 丑 寅 卯 辰 巳 午 未 申 酉 戌 亥
對應編號: 1 2 3 4 5 6 7 8 9 10 11 12
關于年支紀年法,百度是這樣介紹的
①年干公式:年干=公元年個位數-3 (個位小于3,加10)
例:求1899年,1911年和2015年天干?
解:1899年干=9-3=6=己,1911年干=1-3+10=8=辛,2015年干=5-3=2=乙
②年支公式:
(公元年末二位數-11)-12*N=年支(適用于20世紀,即1900—1999年)
(公元年末二位數+5)-12*N=年支(適用于21世紀,即2000—2099年)
對于年支計算,具有局限性,20世紀、21世紀算法都不一樣,總所周知,庚子年(1900)八國聯軍入侵北京,1900末兩位數減去 11 得到的負值,然后補位+12得到1,即為:
(0-11+12)%12=1 對應的子,故1900為庚子年。而別的網站介紹,方法更是五花八門,各種情況下都有不同的算法,實在是太繁瑣,不便于計算
我稍稍精簡了下算法,直接 (年份)%12 +9 = 年支 ,大于一輪地支數12的就減去12,此方法適用于20世紀、21世紀,還適用于18世紀,六十一甲子,就會循環一次,把1900往前推60年,即1840年(第一次鴉片戰爭)肯定也是庚子年,帶入公式 1840%12+9=13 結果大于12,然后減去12得1 ,所以1840年的年支為子。對于21世紀,帶入2017,同樣得到年支酉,經過大量測試,是沒有問題的,作為一個有追求的程序員,怎么會止步于此,于是,后臺程序就出來了
protected void btnJudge_Click(object sender, EventArgs e) { //甲乙丙丁戊己庚辛壬癸 //子丑寅卯辰巳午未申酉戌亥 string[] G = { "甲","乙","丙","丁","戊","己","庚","辛","壬","癸" }; string[] Z = { "子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥" }; //獲取文本框值 string year =txtYear.Text.Trim().ToString(); string i = year.Substring(3,1); int Lasti = Convert.ToInt32(i); //計算年干 Lasti = Lasti > 3 ? Lasti - 3 : Lasti + 10 - 3; string YearG = G[Lasti-1]; //計算年支 int Lastz = Convert.ToInt32(year) % 12 + 9; Lastz = Lastz > 12 ? Lastz - 12 : Lastz; string YearZ = Z[Lastz-1]; string All = YearG + YearZ; Response.Write("<script>alert('"+All+"')</script>"); }
對于文本框輸入值合不合法,則是在前臺進行判斷
<script type="text/javascript"> $(function () { $("#btnJudge").click(function () { var num = /\d/; var Year = parseInt($("#txtYear").val()); if (!num.test(Year)) { alert("請輸入一個合法年份"); return false; } else if (Year < 999 || Year > 9999) { alert("請輸入一個介於999~9999的年份"); return false; } }) }); </script>
對于月份的算法,這就比較復雜了,需要查詢月干表,如現在還是丙申猴年的臘月,那么查下表可得,月支為 辛丑

然而在程序員的眼中,這只是一個二維數組而已,創建了此表,然后根據年干和月份來查詢月支即可,僅此而已。
關于這些皮毛,個人只是興趣愛好,中華文明,博大精深,而現代社會的高速發展,讓身邊的人都忙忙碌碌,或許是無暇顧及其它,讓人不由得想起了那句:子在川上曰,逝者如斯夫
文章列表
全站熱搜