我們都知道曆法中的年、月、日、時四個時間都有天幹和地支,十天幹與十二地支單雙各自匹配形成六十個幹支組合,稱六十甲子。月時的幹支是有一定規律的,而年和日的幹支推算方法就複雜多了。
公元後的天幹與公元紀年的數字是固定的,因為公元紀年數是十進位,天幹也是十位一循環,於是我們從歷來的天幹紀年中一一對應出公元的個位數,即:0庚、1辛、2壬、3癸、4甲、5乙、6丙、7丁、8戊、9己。而年的地支有12位,逆推得出公元元年是庚申年,因此地支的算法是:(公元紀年數+9)÷12所得的餘數就等於相應的地支,餘數對應地支:0亥、1子、2醜、3寅、4卯、5辰、6巳、7午、8未、9申、10酉、11戌。其中,其中加9後足12的直接對應地支數。
例如:公元14年(新莽天鳳元年)的地支=(14+9)÷12=1餘11(戌)。個位數4(甲),所以這年的幹支是甲戌年。
公元前的天幹地支算法又不同,公元前的天幹從0庚開始,逆推分別是1己、2戊、3丁、4丙、5乙、6甲、7癸、8壬、9辛。公元前的地支算法是:9—(公元紀年÷12)的餘數,但凡是餘數為10和11的不被9減,餘數為10直接加1,餘數為11的直接減1。其中不足9的公元紀年直接加9,公元前10年和11年直接對應地支數。
例1:公元前770年(周平王元年)的地支=9—(770÷12)餘數=7(午),天幹為0(庚),所以這年的幹支是庚午年。
例2:公元前251年(秦昭襄王五十六年)的地支=251÷12=20餘11,餘數11—1=10(酉),天幹1(己),所以這年是己酉年。
月的幹支推算很簡單,月的地支按二十四節氣來算,大雪建子,小寒建醜,立春建寅,驚蟄建卯,清明建辰,立夏建巳,芒種建午,小暑建未,立秋建申,白露建酉,寒露建戌,立冬建亥。月的天幹則跟著年幹來推,幹支年是以立春開始,開年第一地支是寅,所以甲己年從丙寅月開始,乙庚年從戊寅月開始,丙辛年從庚寅月開始,丁壬年從壬寅月開始,戊癸年從甲寅月開始。12個月按六十個甲子循環一次為五年,從甲到己中間剛好五年,所以甲己年的月令都是把甲子,乙丑兩月劃到上一年,到丙寅月開始交年。
日的幹支推算更加繁瑣,只能從當日幹支往前推,如果算上一年或後一年同等公曆日的幹支就按照閏年每年幹支往前推6位,平年每年往前推5位。如果要推任意一日的幹支,則要考慮每4年一閏,128年加1閏,400年3閏,世紀數能被4整除的則要在這公元紀年數中加入餘數×3的閏年,然後還要按當前幹支用六十甲子來推,其方法相當複雜難懂。日的幹支最方便的就是查萬年曆。
時的幹支推算也很簡單,23~01時為子時,以此類推,天幹甲己日就從甲子開始,到乙亥結束。乙庚日從丙子開始,到丁亥結束。時從日尋和月從年尋一樣的推算方法。只不過年以寅為始,月以子為始。