天干地支算法 天干地支计算

年的干支方法一: 首先要能记住十大天干和十二地支,十天干:甲、乙、丙、丁、戊、己、庚、辛、壬、癸;十二地支:子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥;天干地支纪年法首先是天干在前,地支在后,比如今年2005就为-乙酉年。天干算法:4、

天干地支算法 天干地支计算

年的干支

方法一:
首先要能记住十大天干和十二地支,十天干:甲、乙、丙、丁、戊、己、庚、辛、壬、癸;十二地支:子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥;
天干地支纪年法首先是天干在前,地支在后,比如今年2005就为-乙酉年。
天干算法:
4、 5、 6、 7、 8、 9、 0、 1、 2、 3 对应的十天干就是
甲、乙、丙、丁、戊、己、庚、辛、壬、癸,
数字为年代的最后的一位数字,比如2005年,最后一位是5,对应的天干就是乙;
地支的算法:用年代数除以12,后面的余数就代表某个地支,
余数分别为:4、 5、 6、 7、 8、 9、 10、 11、 0(能整除)、1、 2、3,
代表地支为:子、丑、寅、卯、辰、巳、午、 未、 申、酉、戌、亥,
比如2005年为例:年代末尾数为5,对应的天干为乙,2005除以12,余数为1,对应的地支为酉,所以2005年为乙酉年。
方法二:
对应数字:1、 2、 3、 4、 5、 6、 7、 8、 9、 0
相应天干:甲、乙、丙、丁、戊、己、庚、辛、壬、癸
对应数字:1、 2、 3、 4、 5、 6、 7、8、9、10、 11、 0
相应地支:子、丑、寅、卯、辰、巳、午、 未、 申、 酉、 戌、 亥
公元年份-3,除以10得余数可得天干,如1984年,(1984-3)|10=1所以天干为甲;
公元年份-3,除以12得余数可得地支,如1984年,(1984-3)|12=1所以地支为子;
所以公元1984年为甲子年。
方法三:
用一个你知道的年份的天干地支来推算,比如用2006年算1955年的天干地支,先要知道2006年是丙戌年,用2006-1955=51,再用51除以10,余数为1,表明天干是丙往前推一位,答案是乙,接着用51除以12,余数为3,表明地支是戌往前推三位,答案是未,那么1955年就是乙未年。
方法四:
查表法,前提是你要有个六十甲子表
六十甲子表
1 甲子 13 丙子 25 戊子 37 庚子 49 壬子
2 乙丑 14 丁丑 26 己丑 38 辛丑 50 癸丑
3 丙寅 15 戊寅 27 庚寅 39 壬寅 51 甲寅
4 丁卯 16 已卯 28 辛卯 40 癸卯 52 乙卯
5 戊辰 17 庚辰 29 壬辰 41 甲辰 53 丙辰
6 已巳 18 辛巳 30 癸巳 42 乙巳 54 丁巳
7 庚午 19 壬午 31 甲午 43 丙午 55 戊午
8 辛未 20 癸未 32 乙未 44 丁未 56 已未
9 壬申 21 甲申 33 丙申 45 戊申 57 庚申
10 癸酉 22 乙酉 34 丁酉 46 已酉 58 辛酉
11 甲戌 23 丙戌 35 戊戌 47 庚戌 59 壬戌
12 乙亥 24 丁亥 36 已亥 48 辛亥 60 癸亥
1,比如,记住几个特殊的年份如1984年为甲子年,类推1924,1864,1804,……均为甲子年。提到的壬戌是第59顺位,那么用甲子年份加上59减1得到的1982,1922,1862,1802……都是壬戌年!
2,比如,《辛亥革命》的辛亥年是1911年(48号干支),《戊戌变法》的戊戌年为35号干支,比辛亥年早13年,则“1911-13=1898”故《戊戌变法》是1898年。
3,比如,2008年:2008-3=2005,2005÷60,余数为25,查六十年甲子(干支表)25号干支,得知是戊子年。
4,比如,求1991年干支:1991÷60=33余11,年干支序号数=11-3=8。查干支表知该年为辛未年。 (如能诀六十甲子表就太好了)
(注意:年干支的是以立春为分界的,正月立春以后出生的,用本年干支;在立春前出生的,用上一年的干支)
月的干支
月的地支是固定不变的:正月是寅,二月是卯,三月是子,依次类推…..
月的天干记忆比较简单,只要在你年干的基础上记住几句歌诀就可以了:
甲己之年丙做首;乙庚之年卯为头;
丙辛必定寻庚起;丁壬壬位顺流行;
还有戊癸何方觅,甲定之上好追求。
意思就是说,若遇甲或己的年份 ,正月是丙寅;遇上乙或庚之年,正月为戊寅;遇上丙或辛之年,正月为庚寅;遇上丁或壬之年,正月为壬寅;遇上戊或癸之年,正月为甲寅。依照正月之干支,其余月份按干支推算即可。有表如下:
年 份 一月二月三月四月五月六月七月八月九月十月十一月十二月
甲、巳 丙寅丁卯戊辰己巳庚午辛未壬申癸酉甲戌乙亥 丙子丁丑
乙、庚 戊寅己卯庚辰辛巳壬午癸未甲申乙酉丙戌丁亥 戊子己丑
丙、辛 庚寅辛卯壬辰癸巳甲午乙未丙申丁酉戊戌己亥 庚子辛丑
丁、壬 壬寅癸卯甲辰乙巳丙午丁未戊申己酉庚戌辛亥 壬子癸丑
戊、癸 甲寅乙卯丙辰丁巳戊午己未庚申辛酉壬戌癸亥 甲子乙丑
(注意:农历的闰月是不记干支的)
日的干支
我们都知道,日的干支,甲子为第一日,乙丑为第二日,丙寅为第三日……60日为一周。一周完了再由甲子日起,周而复始,循环下去。例如农历己巳年(1989年)正月初一是丁酉日,初二是戊戌日……到三月初七正好是60天,因此三月初二又是丁酉日。
找日干支的方法最多,但都是比较有挑战性的。有机会我会同大家分享下!当然最简单的就是查万年历了!
时的干支
时的地支是固定的,这个就不多说了。
时的天干由日天干也可轻易得到:
甲己还生甲,乙庚丙作初
丙辛从戊起,丁壬庚子居,
戊癸何方发,壬子是真途即若该日是甲或己的,在子时上配上甲为甲子;该日是乙或庚的,在子时上配上丙为丙子;丙辛日子时配上戊为戊子;丁壬日为庚子;戊癸日为壬子。知道了子时的天支,便可推知其余。

示例代码:

const unsigned char sky[][3]= {‘甲’,’乙’,’丙’,’丁’,’戊’,’己’,’庚’,’辛’,’壬’,’癸’,};
const unsigned char earth[][3]={‘子’,’丑’,’寅’,’卯’,’辰’,’巳’,’午’,’未’,’申’,’酉’,’戌’,’亥’,};
const unsigned char shengxiao[][3]={‘鼠’,’牛’,’虎’,’兔’,’龙’,’蛇’,’马’,’羊’,’猴’,’鸡’,’狗’,’猪’};

/*********************************************************************************************************
** 函数名称:GetSkyEarth
** 功能描述:输入公历日期得到一个甲子年(只允许2000-2099年)
** 输 入: year 公历年
** p

**——————————————————————————————————
********************************************************************************************************/
void GetSkyEarth(unsigned char year,unsigned char *p)
{
year += 16;
year %= 60;
*p=year;
}

void StrCopy(char *target,unsigned char *source,unsigned char no)
{
unsigned char i;

for(i=0;i<no;i++)
{
*target++=*source++;
}
}

void testSkyEarth(void)

{

unsigned char SEyear;

unsigned char skyBuf[2];

unsigned char earthBuf[2];

unsigned charshengxiaoBuf[2];

GetSkyEarth(18,&SEyear); //2018 ,result: sEyear = 34;

StrCopy(skyBuf,(unsigned char *) sky[SEyear%10],2); //戊

StrCopy(earthBuf,(unsigned char *)earth[SEyear%12],2); // 戌
StrCopy(shengxiaoBuf,(unsigned char *)shengxiao[SEyear%12],2); // 狗

}

//即2018年为戊戌狗年

本文永久地址:https://www.youxuanhao.cn/article/330876.html

为了避免权属纠纷,特做如下说明:本站图文内容作品来自用户分享及互联网,仅供参考,无法核实真实出处,并不代表本网站赞同其观点和对其真实性负责,本网站仅提供信息存储空间服务,我们致力于保护作者版权,如果发现本站有涉嫌侵权的内容,欢迎发送邮件至youxuanhao@qq.com 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。网站中的商品信息均来自于互联网,如商品信息不同,可能是商品信息未及时更新,所有商品信息请以商家店铺内为准!

发表评论

登录后才能评论
商务微信
商务微信
关注赚钱
关注赚钱
分享本页
返回顶部