-「出生日期转换生辰八字」快速通过公历计算生辰八字日柱的方法

出生日期转换生辰八字

  术数里经常需要使用干支历法,现在人一般都使用手机排盘,或是上网查询,但是有时遇到手头没有排盘软件,或是超出排盘软件计算的日期时,计算干支便成了一个比较麻烦的事。   年月总归是比较好记的,对大多数人来说,最难的便是日柱的计算方法。   一般快速计算可以使用著名的高氏日柱公式,通过它来计算干支,还需要要配合辅助公式使用:   辅助公式:X=44(C-17)+(C-17)/4+3   日柱公式:r=s/4*6+5(s/4*3+u)+m+d+x   r:日柱的母数,r除以60的余数即是日柱的干支序列数;   s:公元年数后两位数,s/4只取整数部分;   u:s除以4的余数;   m:月基数   d:日期数   x:世纪常数   比如计算1949年10月1日的日柱,首先要计算X,1949年,是20世纪,所以C就为20   X=44(20-17)+(20-17)/4+3   X=135   得到的x,除以60取余数,得15,代入到日柱公式中,即:   r=s/4*6+5(s/4*3+u)+m+d+15   49年,s要取减1,那么s就是48,而m为月基数,所以需要查表:   因为为10月1日,所以m为33,d为1,,所以可以再进行代入:   r=49/4*6+5(49/4*3+u)+33+1+15   注意u,它是48除以4取的余数,所以u=0,所以:   r=48/4*6+5(48/4*3+0)+33+1+15   r=72+180+33+1+15   r=301   最后可得r=301,按60取余数得1,1即是甲子,所以1949年10月1日是甲子日。   同样的,用来计算一下2000年1月1日的日柱,21世纪自然C-21,所以:   X=44(21-17)+(21-17)/4+3   X=176+1+3   X=180   对60取余,为0,所以x=0,而2000年,取最后两位00减1为99,代入日柱公式   r=s/4*6+5*(s/4*3+u)+m+d   r=99/4*6+5*(99/4*3+3)+0+1   r=24*6+5*(26*3+3)+1   r=148.5+386.25+1   r=535.75   取整后,为535,对60取余得55,干支列表中的第五十五位:戊午,故2000年1月1日的日柱为戊午。   这种计算还需要把月的基数表记忆下来,而且s还要减1换算,u又在其中是代表取余,着实麻烦,是否有看起来思维负担不那么重的方法?   答案是有的,在维基百科上有一个公式是这样的:   r=44*c+INT(c/4)+5*y+INT(y/4)+30*(m+1)+INT(3*(m+1)/5)+d+7;   这里的计算就比较简单了,INT代表的是括号里的运算只取整数,不用取小数,比如2019年10月11日,它的变量是这样的:   c=20   y=19   m=10   d=11   然后代入计算便可以了,尤其是这个公式,可以不用涉及小数运算,凡是除不尽的,都直接忽略掉小数,举例来说,这个变量代表入后,公式即为:   r=44*20+INT(20/4)+5*19+INT(19/4)+30*(10+1)+INT(3*(10+1)/5)+11+7;   r=880+5+95+4+330+6+11+7   r=1338   1338按60取余,得18,即第18个干支。   用18对10取余,得8,这为天干序数,第八个为辛   用18对12取余,得6,这为地支序数,第六个为巳   所以此日柱为辛巳。   但值得注意的是,这个公式只适合1582年后的格里历的算法,如果是1582年以前的儒勒历,则需要把C的系数改成45,而最后的+7改为加5。   为清晰分列如下:   格里历:r=44*c+INT(c/4)+5*y+INT(y/4)+30*(m+1)+INT(3*(m+1)/5)+d+7;   儒勒历:r=45*c+INT(c/4)+5*y+INT(y/4)+30*(m+1)+INT(3*(m+1)/5)+d+5;