天干地支计年的算法
默认分类 2010-03-18 17:19:21 阅读3 评论0 字号:大中小
中国古代以干支纪年,天干是“甲、乙、丙、丁、戊、己、庚、辛、壬、癸”,地支是“子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥”。甲午战争发生于1894年,八国联军侵华的1900年应是( )
A.己亥年 B.庚子年 C.辛丑年 D壬寅年
首先我们先要明白天干与地支是如何搭配的
天干:甲、乙、丙、丁、戊、己、庚、辛、壬、癸
地支:子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥。十天干与十二地支按顺序两两相配,从甲子到癸亥,共六十个组合,即六十甲子。(10与12的最小公倍数是60)
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
甲子 | 乙丑 | 丙寅 | 丁卯 | 戊辰 | 己巳 | 庚午 | 辛未 | 壬申 | 癸酉 | 甲戌 | 乙亥 |
13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
丙子 | 丁丑 | 戊寅 | 己卯 | 庚辰 | 辛巳 | 壬午 | 癸未 | 甲申 | 乙酉 | 丙戌 | 丁亥 |
25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 |
戊子 | 己丑 | 庚寅 | 辛卯 | 壬辰 | 癸巳 | 甲午 | 己未 | 丙申 | 丁酉 | 戊戌 | 己亥 |
37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 |
庚子 | 辛丑 | 壬寅 | 癸卯 | 甲辰 | 乙巳 | 丙午 | 丁未 | 戊申 | 己酉 | 庚戌 | 辛亥 |
49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 |
壬子 | 癸丑 | 甲寅 | 乙卯 | 丙辰 | 丁巳 | 戊午 | 己未 | 庚申 | 辛酉 | 壬戌 | 癸亥 |
序号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | ||
天干 | 甲 | 乙 | 丙 | 丁 | 戊 | 己 | 庚 | 申 | 壬 | 癸 | ||
序号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
地支 | 子 | 丑 | 寅 | 卯 | 辰 | 巳 | 午 | 未 | 申 | 酉 | 戌 | 亥 |
1894年是甲午年,那么1895年的天干是乙,依此类推,1900年的天干就是庚;同样,1894年的地支是午,1900年的地支就是子;所以1900年是庚子年。如果大家还想到1901年八国联军胁迫清政府签订了《辛丑条约》,就是1901年是辛丑年,那么天干与地支的序号都往前推一下,也可以推出来1900年是庚子年。(《辛丑条约》中的所涉及的赔款,因为是针对1900年(庚子年)的义和团运动而规定,所以也叫庚子赔款。)
如果没有告诉你相邻的某个年份是什么年,那么又怎样推算呢?比如,1861年用干支纪年应是?1984年用干支纪年应是?
这里有一个计算的公式:N=X-3-60m(0≦N﹤60,m是一个自然数)
N是60个干支的序号,比如N=1时就是甲子,X就是公元某某年。
那么按照这个公式,1861年的序号就是:1860-3-60m,那么就取m=29,这样N=58,如果取m=30的话,N=-2,这时就要加60,也就是说0≦N﹤60,如果N=0,那么就是第60个干支。现在知道与1861年对应干支是第58个,但是如果没有上面那个表格可供查阅,怎么办呢?我们知道天干是10个,地支是12个,10天干与12地支按顺序两两相配,那么第58号对应的天干的序号应是58÷10的余数,余数是8,第八个天干是申;同样,第58号对应的地支的序号是58÷12的余数,余数是10,第十个地支是酉,所以1861年是农历辛酉年。
所以天干的序号A=mod(N,10),地支的序号B= mod(N,12)
(大家就是对于m应该取多少,不用去想,很简单,就像小学生列除法算式一样,N-3那个数除以60,所得的商数就是m, 余数就是N)
注意:这里的公式只适用于公元后的年份
公元前的计算公式应是N=X-2-60m,(因为公元前1年后就是公元元年也就是公元1年,没有公元0年),(X就是一个负数了,m也取负数)