>>分享数据结构和算法相关的知识和技术 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 19470 个阅读者 刷新本主题
 * 贴子主题:  天干地支算法 回复文章 点赞(0)  收藏  
作者:mary    发表时间:2020-03-15 12:43:14     消息  查看  搜索  好友  邮件  复制  引用

   天干地支算法

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

                           天干( 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)



----------------------------
原文链接:https://blog.51cto.com/346832171/989798

程序猿的技术大观园:www.javathinker.net



[这个贴子最后由 flybird 在 2020-03-20 11:32:07 重新编辑]
  Java面向对象编程-->类的生命周期
  JavaWeb开发-->Web运作原理(Ⅱ)
  JSP与Hibernate开发-->映射组成关系
  Java网络编程-->用Axis发布Web服务
  精通Spring-->虚拟DOM和render()函数
  Vue3开发-->Vue简介
  算法学习与收集:一些有用的算法网站和网页
  深度学习之图片压缩算法
  对simhash算法的一些思考
  java 通配符的应用范例, java 排序算法
  Haproxy支持的调度算法
  活动安排问题(贪心算法)
  ipvsadm及lvs的调度算法
  全排列的六种算法
  Java算法题:有关100阶楼梯的算法
  绕圆算法
  面试官问我:什么是消息队列?什么场景需要他?用了会出现什...
  微软面试题:买卖股票的最佳时机
  技术和算法的抉择
  浅谈常见的七种加密算法及实现
  好书推荐:《小灰的算法之旅》
  更多...
 IPIP: 已设置保密
楼主      
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


中文版权所有: JavaThinker技术网站 Copyright 2016-2026 沪ICP备16029593号-2
荟萃Java程序员智慧的结晶,分享交流Java前沿技术。  联系我们
如有技术文章涉及侵权,请与本站管理员联系。