论坛风格切换切换到宽版
  • 3987阅读
  • 4回复

天干算法、地支算法 [复制链接]

上一主题 下一主题
离线朔漠鹰扬
 

只看楼主 倒序阅读 0楼 发表于: 2013-05-23
首先我们先要明白天干与地支是如何搭配的
天干:甲、乙、丙、丁、戊、己、庚、辛、壬、癸
地支:子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥。十天干与十二地支按顺序两两相配,从甲子到癸亥,共六十个组合,即六十甲子。(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也取负数)
不过不知道这个公式是否准确。前面的公式N=X-3-60m来源于《简明天文学教程》 作 者: 余明 ;出版社: 科学出版社。
90+成员,中国第一家全无纸化校对公司(2017第8年);QQ32767629;微信jiaodui;公众号jiaoduiw;手机13556123901
离线朔漠鹰扬

只看该作者 1楼 发表于: 2013-05-23
最简单算法是到网上的万年历翻!!!
90+成员,中国第一家全无纸化校对公司(2017第8年);QQ32767629;微信jiaodui;公众号jiaoduiw;手机13556123901
离线25dtwalkman

只看该作者 2楼 发表于: 2013-05-23
    简单的算法:

    天干=公元年份/10后所得的商 减去3 ,所得到的数字分两种情况:>0的 就是天干的排序;≤0的要在此数基础上加上10,所得的数字就是天干的排序。举例如下:

     1990年的天干:1990/10=199,得数没有余数,用0-3=-3再加上10,即7。所以,1990年的天干就是庚。
    1990年的地支: 1990/12=165余数是10 只看余数,用10-3 等于7,7大于0,所以,1990年的地支就是午。所以,1990年的农历纪年为庚午年。

    再如 2009年,2009年的天干算法就算2009除以10=200余数是9,用9减去3,所得的余数就是6,就算天干的排序,即己。
2009年的地支就算2009除以12=167余数是5,5-3=2,所以地支排序是丑,所以2009年的农历纪年就是己丑年。
    2012年的天干:2012除以10=201余数是2,用2减去3,不够减,得数是-1,那么就得加上个10,-1+10=9,所以,2012年的天干为第九位壬。
    2012年的地支:2012除以12=167余数是8,8-3=5,5为辰,所以2012年的干支纪年为壬辰。
离线指云

只看该作者 3楼 发表于: 2013-05-23
离线25dtwalkman

只看该作者 4楼 发表于: 2013-05-23
回 25dtwalkman 的帖子
25dtwalkman:    简单的算法:
    天干=公元年份/10后所得的商 减去3 ,所得到的数字分两种情况:>0的 就是天干的排序;≤0的要在此数基础上加上10,所得的数字就是天干的排序 .. (2013-05-23 17:30) 

补充一点:如果地支的余数在减去3之后小于0,那么要再加上12即得出地支的排序。
快速回复
限1000 字节
 
上一个 下一个