从已知的公历年份计算干支纪年:年份数减3,除以10的余数是天干,除以12的余数是地支。(公元前的年份则用58-“年份数除以60的余数”后计算)
也可以天干:年份÷10,得到的商不管,看余数,若余数-3得正,则按天干顺序往下数,得数即为天干顺序数,若余数-3为负,则+10,得到的数即为天干数,若余数为3,则为天干的最后一位,即癸。
地支:年份÷12,得到的商不管,看余数,若余数-3得正,则按地支顺序往下数,得数即为地支顺序数。若余数-3为负,则+12,得到的数即为地支顺序数,若余数为3,则为地支的最后一位,即亥。
把天干数和地支数合并起来,即为所求的干支年份。
如:2001年查万年历为辛巳年,算法为:
2001÷10=200……1,1—3=—2,—2+10=8,按天干顺序数到8,甲、乙、丙、丁、戊、己、庚、辛。第8位为辛。
2001÷12=166……9,9—3=6,按地支顺序数到6,子、丑、寅、卯、辰、巳。第6位为巳。
按照以上计算结果,把天干、地支合并起来可知,2001年为辛巳年。
▲干支纪年与格里历的换算
若我们把天干的甲、乙、...、壬、癸编上 0、 ......、8、9 等序号;地支的子、丑、...、戌、亥亦编上 0、1、 ......、10、11 等序号,那么:
从已知的格里历年份计算干支纪年:年份数减4,除以10的余数是天干,除以12的余数是地支。例如:
(1972 - 4)÷ 10 ≡ 8,所以天干是“壬”;
(1972 - 4)÷12 ≡ 0,所以地支是“子”。
附:已知天干地支,如何得到当前是60年中的第几年 (杨霖坤 编程)。
X=天干 Y=地支
if x - y >= 0 then
z = 6x - 5y;
else
z = 6x - 5y + 60;