天干地支算法

来源:互联网 发布:软件项目经费预算 编辑:程序博客网 时间:2024/05/01 00:05

天干地支算法

 

首先我们需要知道什么是天干什么是地支,有多少个天干多少个地支?

 

天干( Celestial  Stem ) : 中国古代的一种文字计序符号,共10个字: 甲、乙、丙、丁、戊、己、庚、辛、壬、癸,循环使用。

 

地支( Terrestrial  Branch ) : 中国古代的一种文字计序符号,共12个字∶子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥,循环使用。

 

天干寓意

  (甲)象草林破土而萌,阳在内而被阴包裹。又有认为,甲者铠甲也,把万物冲破其甲而突出了。

  (乙)草木初生,枝叶柔软屈曲伸长。乙者轧也。

  (丙)丙,炳也,如赫赫太阳,炎炎火光,万物皆炳然著见而明。

  (丁)壮也,草木成长壮实,好比人的成丁。

  (戊)茂也,象征大地草木茂盛。

  (己)起也,纪也,万物仰屈而起,有形可纪。

  (庚)更也,秋收而待来春。

  (辛)金味辛,物成而后有味。又有认为,辛者新也,万物肃然更改,秀实新成。

  (壬)妊也,阳气潜伏地中,万物怀妊。

    (癸)揆也,万物闭藏,怀妊地下,揆然明芽。

 

 

地支寓意

  (子)孽也,草木生子,吸土中水分而出,为一阳萌的开始。

  (丑)纽也,草木在土中出芽,屈曲着将要冒出地面。

  (寅)演也,津也,寒土中屈曲的草木,迎着春阳从地面伸展。

  (卯)茂也,日照东方,万物滋茂。

  (辰)震也,伸也,万物震起而生,阳气生发已经过半。

  (巳)起也,万物盛长而起,阴气消尽,纯阳无阴。

  (午)仵也,万物丰满长大,阳起充盛,阴起开始萌生。

  (未)味也,果实成熟而有滋味。

  (申)身也,物体都已长成。

  (酉)老也,犹也,万物到这时都犹缩收敛。

  (戌)灭也,草木凋零,生气灭绝。

    (亥)劾也,阴气劾杀万物,到此已达极点

 

天干地支两者组合中生成六十甲子所以古人便说六十岁为一甲子

 

六十甲子循序:

 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.癸亥

 

好了上面的介绍只是很片面的有兴趣的朋友可以到网络上搜索一下相关的资料,哩到只系讲计算指定的年份是那个天干那个地支那个甲子。

我们从上面了解到天干有 10个 地支有 12个 组合成60个甲子,OK 我地首先做成2个数组用来保存十天干和十二地支。

 

天干 :甲  乙  丙  丁  戊  己  庚  辛  壬  癸

地支 :子  丑  寅  卯  辰  巳  午  未  申  酉  戌   亥

 

因为年干支的干支配合虽后代才有,但其应用是仍从公元后1年开始。刚好公元前第四年为甲子年,减去3是为了计算的方便,把公元前和公元后两者的记年法分开来言。根据《素问·六微旨要大论》中言“子甲相和,名曰岁立”理论,把公元后记年仍从甲子年开始,所以要减去前3年,目的是让公元后一年亦为甲子年。

所以公式为: 天干 = ( 当前年份 — 3 ) Mod 10

             地支 = ( 当前年份 — 3 ) Mod 12

天干地址下标分别为

 

下标

0

1

2

3

4

5

6

7

8

9

10

11

天干

 

 

地支

(注:地支可以配合十二生肖年一起计算)

生肖

亥猪

子鼠

丑牛

寅虎

卯兔

辰龙

巳蛇

午马

未羊

申猴

酉鸡

戌狗

 

六十甲子公式:天干 + 地支

 

计算年份对应的天干地支甲子都出黎啦下面当然是事例啦!就拿2010年来计算一下。

 

事例:

Year = 2010

Celestial  Stem = ( Year – 3 ) Mod 10

                = ( 2010 – 3 ) Mod 10

                = 2007 Mod 10

                = 7

                = 庚

Terrestrial  Branch = ( Year – 3 ) Mod 12

                    = ( 2010 – 3 ) Mod 12

                    = 2007 Mod 12

                    = 3

                    =寅

Chinese Animal = 寅虎

 

A Cycle Of Sixty Years(甲子) = Celestial  Stem + Terrestrial  Branch

                             = 庚寅

得出既结果大家可以去网站搜查一下对不对

 

月份的天干地支算法,以 2010年为事例我们先计算正月的天干地支

正月天干=如果天干数小于5 公式上需要加上5 如果大于等于5公式上需要减去5,

正月地支=年地支

公式如下:

正月天干= 2 × Year Celestial  Stem — 4 + (Year Celestial  Stem 〈 5 ) ? 5 : -5已经知道年份的天干数为7 大于5

正月天干为 = 2 × Year Celestial  Stem — 4 + -5

           = 2 × 7 — 4 + -5

           = 14 — 4 + -5

           = 5

           = 戊

正月天干地址 = 九月天干 + Year Terrestrial  Branch

             = 戊寅

 

日天干地支算法公式:

日天干:=( 4 * C + [ C / 4 ] + [ 5 * Y ] + [ Y / 4 ] + [ 3 * ( M + 1 ) / 5 ] + D – 3 ) Mod 10

日地支:=( 8 * C + [ C / 4 ] + [ 5 * Y ] + [ Y / 4 ] + [ 3 * ( M + 1 ) / 5 ] + D + 7 + I ) Mod 12

其中 C 代表年份头两位数 如: 2010年 C=20

     Y 代表年份尾两位数 如: 2010年 Y=10

     M代表月份数 如 2010年10月 M=10

     D 代表日数   如 2010年10月7日 D=7

     I  是需要判断当前月份是奇数月还是偶数月 奇数月I=0 偶数月 I=6

     [ ] 是取整数的意思

 

从上面公式中可以简化为下面公式:

日天干总数:G = 4 * C + [ C / 4 ] + [ 5 * Y ] + [ Y / 4 ] + [ 3 * ( M + 1 ) / 5 ] + D – 3

日地支总数:Z = G + 4 * C + 10 + I

 

日天干:= G Mod 10

日地支:= Z Mod 12

 

就以 2010年10月7日 来做例子

日天干总数:G = 4 * C + [ C / 4 ] + [ 5 * Y ] + [ Y / 4 ] + [ 3 * ( M + 1 ) / 5 ] + D – 3

            G = 4 * 20 + [ 20 / 4 ] + [5 * 10 ] + [ 10 / 4 ] + [ 3 * ( 10 + 1 ) / 5 ] + 7 - 3

            G = 80 + 5 + 50 + 2 + 6 + 7 – 3

            G = 147

 

日地支总数:Z = G + 4 * C + 10 + I      10月双数 I=6

            Z = 147 + 4 * 20 + 10 + 6

            Z = 147 + 80 + 10 + 6

            Z = 243

 

日天干 : = G Mod 10 = 147 Mod 10 = 7 = 庚

日地支 : = Z Mod 12 = 243 Mod 12 = 3 = 寅

日天干地支为:庚寅

 

二十四小时和十二时辰对照表

子(23-01)  丑(01-03)  寅(03-05)  卯(05-07)  辰(07-09)  己(09-11)
午(11-13)  未(13-15)  申(15-17)  酉(17-19)  戊(19-21)  亥(21-23)
原创粉丝点击