最近正在幫台南的一座著名廟宇開發資訊管理系統,不同於一般系統的客戶資料,他們很重視農曆生日,但是多數人只會記得國曆,於是我的資訊系統就有義務提供互相轉換的計算工具,我為此傷了不少腦筋,也藉此學到很多之前不知道的,有關農曆曆法的知識,在此就當作個筆記,讓也不太懂農曆的朋友們分享一下,至於已經很懂的朋友們就拜託不要笑我了!
首先農曆是有大小月的,各為30與29天。但是很詭異,大小月的月份不是固定的!譬如今年3月可能是30天,明年卻變成29天!這個月是大月,下個月也未必是小月!其次,陽曆閏年只是小修一個2/28或2/29,差一天而已!農曆則是19年中有7個閏年,閏年不是多一天,而是多一個月!最詭異的是閏哪一個月的規則居然是沒法持續推算的!所以找遍網路世界我也只能找到一個「列表」,就是告訴我到2031年為止,有閏年時是閏哪一個月,2031年之後的閏年要閏哪一個月,好像大家還得屆時再開會商議的樣子?
對於地球科學系畢業的我來說這可真是非常稀奇!根據以前的認知,任何曆法都是可以做成「萬年曆」的!就是依據天文規律,應該幾千年之內不會有太詭異的變動,或者我們相信它不會突然變動!既然有規律可以推測,自然可以用數學公式計算,但是我們使用的農曆卻不可以!為何不行?我還沒能參透玄機。
還好,我需要的東西目前都搞定了!過程卻不太簡單。原本我以為這種事情很多人應該早就遇過,網路隨便搜搜就好了,確實也找到不少資源,但是基本上國曆轉農曆比較容易,反向轉換就很難!甚至我發現有些號稱可以正確轉換的萬年曆網站程式有漏洞,特殊日期時段的轉換結果是錯的!這也讓我困擾了一陣子,主要是農曆與國曆年的交界不是完全一樣,一年中有些時段國曆與農曆年次是不同的!那些有小錯的網站讓我核對自己解答時也跟著迷糊一陣,譬如到元宵節了都還是顯示前一年的歲次等等。
好加在!我終於搞定了。但是不好意思,其實我還是沒導出農曆轉國曆的完整數學公式,而是賴皮的使用嘗試錯誤法!就是先概略取得可能的國曆日期落點,將那天前後幾十天的國曆日期利用國曆轉農曆的程式一一轉成農曆,再與我要找的農曆日期比較,找到一樣的結果就輸出答案了!感謝現在的電腦夠強悍,不太耗時就可以多做幾十次的運算,所以正反轉換也都是一眨眼之間的事情!
原本這對於我這個「專家」來說應該是很漏氣的事情,但是想一想連農曆曆法專家們都還有不確定的事情,我又何必努力鑽研曆法邏輯,堅持必須找出正確公式呢?也許當我找到正確公式之後,他們開個會又改掉了!那不是很冤枉嗎?哈哈!
限會員,要發表迴響,請先登入
- 4樓.2013/01/07 02:07用八卦算應該可以算到
用八卦算應該可以算到 - 3樓. 小吳2012/08/15 15:18請問有原始碼可參考嗎
最近在也找這東西..但都沒有找到適合的,請問專家..有沒有javascript 版的可以參考一下?我是用VB寫的,有興趣可以與我進一步聯繫,ycc@tsu.edu.tw 鄉下老師 於 2012/08/18 07:45回覆 - 2樓. 阿大2011/03/24 23:22閏年
農曆有24節氣, 記得好像是若當年的農曆月份若只有一個節氣, 這一年該月就會多個閏月. 節氣要用算的, 台灣好像是由氣象局(或天文台??)負責, 幾年前台灣與大陸算出來的清明(節氣之一)不是同一天
以我所知,節氣雖然是中國文化,但其實是『陽曆』的概念,比農曆的基準還要準!譬如冬至與夏至在國曆日子是固定的!在農曆則不一定。所有農曆的不確定性都是因為想要與太陽週期一致,日月週期本來就不相關,硬要讓他們同步才會有那麼多複雜的閏年閏月,像是陽曆的月份早就放棄與月亮週期同步,也就不去調整了!所以國曆每月15月亮未必是圓的,陰曆15就一定是圓的! 鄉下老師 於 2011/03/24 23:37回覆 - 1樓. 閑散2011/03/24 23:00這倒沒注意到
首先農曆是有大小月的,各為30與29天。但是很詭異,大小月的月份不是固定的!譬如今年3月可能是30天,明年卻變成29天!這個月是大月,下個月也未必是小月!
這倒沒注意到