基本常识:1.天干有十:甲乙丙丁戊己庚辛壬癸;2.地支有十二:子丑寅卯辰巳午未申酉戌亥。我国的第一个甲子年是在公元前2697年。天干有十,故每十年一个循环;地支有十二,故每十二年一个循环。天干与地支相配,按顺序组合,甲子年、乙丑年、丙寅........十与十二的最小公倍数为60,所以60年以后开始重复甲子年,周而复始。通常我们说的一甲子就是60年;年过花甲就是指年过60岁。
故公元1年,与第一个甲子年年差为2697年。2697/10的余数为7,所以公元一年的天干为甲往后推7个数,即第8个天干,辛;2697/12的余数为9,故公元一年的地支为子往后推9个数,即第十个地支,酉。公元2年为壬戌年,公元3年则为癸亥年。公元4年则为甲子年。
为了方便计算,我们以公元3年为基点来计算今后的纪年,因为从癸亥年后又开始新的循环,2697+3=2700正好是60的整倍数,即公元3年后重新从甲子年开始。
譬如2009年的干支纪年:以公元3年为基点,相差2009-3=2006年,故天干为2006/10的余数6,实际上只要看个位数就行了,即是6,第六个天干,即己;地支为(2009-3)/12的余数2,第二个地支,即丑,故2009年为己丑年。
总结一下,天干为(年份-3)的个位数,地支为(年份-3)/12的余数。

有了前一篇天干、地支纪年的基础后,我们再来谈谈天干地支纪月的计算。
我们已经知道地支有十二:子丑寅卯辰巳午未申酉戌亥,刚好对应十二个月,但地支纪月是从农历十一月份开始算起的,所以子代表的是农历十一月,以此往下推,地支丑对应十二月,寅对应正月,卯对应二月,辰对应三月,巳对应四月,午对应五月,未对应六月,申对应七月,酉对应八月,戌对应九月,亥对应十月。所以地支纪月我们就搞清楚了。
每年正月的天干计算方法为(当年的年天干数*2+1)/10的余数,比如2009年为己丑年,年天干为己,数为6,所以2009年正月的天干为6*2+1=13,天干总共是10,十月一循环,13/10的余数为3,故正月的天干为丙,所以2009年正月的天干、地支分别为丙、寅,故正月为丙寅月。算出了正月的天干地支,因为月份与地支的对应关系是固定的,其他的月份就可以依次往下推了,二月,天干为丁,地支为卯,故为丁卯月;三月天干为戊,地支为辰,故为戊辰月;.......那么现在7.18为农历闰五月,小暑(07.07)以前归为五月,之后归为六月份,则地支为未,与正月差5个月,所以天干加5也就是该月份的天干了,即丙(3)+5为辛,故为辛未月。
以农历计算存在一个闰月的问题,相对较为麻烦,所以以节气对应的阳历来计算相对比较固定、准确。将立春至惊蛰(即差不多每年2月4日至3月5日)定为寅月(正月),惊蛰(包括惊蛰,以下均同)至清明(3月5日至4月4日)定为卯月(二月),清明至立夏(4月4日至5月5日)定为辰月(三月),立夏至芒种(5月5日至6月5日)定为巳月(四月),芒种至小暑(6月5日至7月7日)为午月(五月),小暑至立秋(7月7日至8月7日)定为未月(六月),立秋至白露(8月7日至9月7日)定为申月(七月),白露至寒露(9月7日至10月8日)定为酉月(八月),寒露至立冬(10月8日至11月7日)定为戌月(九月),立冬至大雪(11月7日至12月7日)定为亥月(十月),大雪至小寒(12月7日至1月5日)定为子月(十一月),小寒至立春(1月5日至2月4日)定为丑月(十二月)。
譬如:1988年2月12日,1988为戊辰年,天干为戊,数为5。2月12日处于2月4日至3月5日(立春至惊蛰)之间,相当于农历的正月,故地支为寅。故1988年2月12日的月天干为正月的天干,为5*2+1,除以10的余数为1,所以1988年正月的月干为甲,故阳历2月12日为甲寅月。再譬如1982年12月04日,处于11月7日至12月7日(立冬至大雪)之间,为农历10月,地支为亥。1982年为壬戌年,天干为壬,数为9,故1982年正月月天干数为9*2+1=19,除以10的余数为9,为壬。农历10月为正月的天干数往后推9个月即是了,故为9+9=18,除以10余数为8,为辛;故1982.12.04月干支为辛亥。

要计算日干支,可以以某年某月某日作为基点来计算。但首先要知道这个基点的干支情况。比如,我们知道2000年元旦的日天干、地支为戊午。以此为基点,我们就可以计算2000年任何一天的天干、地支。
首先来讲天干的推算,天干10个就一循环,比如2000年3月6日的天干,2000年是闰年,故而二月份有29天,我们知道元旦与3月6日之间的日差为30+29+6-1=30*2+6-2+1+1-1,二月份普通年份28天,差两天三十,大月份31天,有一个1月份,所以加一,2000年是闰年二月份29天,所以加一。故其日差为(30*2+6-2+1+1-1)即【30*月差+该日数-2+大月份数+1(如为闰年)-1】,日差除以10,30*月差能被10整除,故公式可以简化为【-2+大月份数+1(如为闰年)-1】即【大月份数+该日数+1(如为闰年)-3】,亦即1+6+1-3=5,所以3月6日的天干为戊的基础上正推5,即癸。该公式适合于3月份以上的,因为如果是1月份和2月份则不存在二月份28天的问题,一二月份可以直接计算日差的个位数便是。而如果计算2009年元旦的天干呢。二者年差为9,普通年份365天,闰年多一天,四年一闰,100年停闰,400年不停闰,9/4=2,加上2000年也是一个闰年,故总共三个闰年,故2000年元旦与2009年元旦日差为365*9+3(365*年差+闰年数),求天干,只要求其除以10的余数,也就是只要求其个位数即可,365可以拆成360+5,去除360(10的整倍数)故可简化为(5*9+3),即5*年差+闰年数,得出其个位数为8,故余数为8,所以2009年的天干就是戊的基础上正推8,5+8=13,因为天干10个就一循环,超过10,则求其除以10的余数即其个位数3,故2009年元旦的天干为丙。从以上的推算,我们就可以得出每一年元旦的日干计算公式(5*年差+闰年数)/10的余数+5,加5的原因是因为以2000年作为基点,2000年元旦的日干是戊,其数为5。到此,我们无论哪一年的天干都能计算了。
下面我们来讲地支纪日的计算。与天干纪日相类似。地支12个一循环。日差的计算同天干。计算同一年的日差,一二月份只要直接算就行了。三月以上的日差同样是【30*月差-2+该日数+大月份数+1(如为闰年)-1】即【30*月差+该日数+大月份数+1(如为闰年)-3】,地支12个一循环。所以我们应求其除以12的余数。我们将日差公式拆解为【(24+6)*月差+该日数+大月份数+1(如为闰年)-3】/12,24是12的整倍数,故可以省略去,公式简化为【6*月差+该日数+大月份数+1(如为闰年)-3】/12,同样我们计算一下2000年3月6日的日差余数为(6*2+6+1+1-3)/12.......5,所以2000年3月6日的地支为午向后正推5个数,即亥,故2000年3月6日的天干地支纪日为癸亥日。同样我们做一下每一年元旦的地支推算即(365*年差+闰年数)/12的余数+7,因为2000年元旦的地支午,其数为7。我们给其拆解一下,【(360+5)*年差+闰年数】/12的余数+7,360是12的整倍数,所以可以省略,简化为(5*年差+闰年数)/12的余数+7。这样我们来计算一下2009年元旦的地支为(5*9+3)/12的余数+7=7,所以其地支亦是午,故2009年元旦为丙午日。
到此干支纪日就完备了。

地支与时辰的关系是固定的,即子时(23点至1点)、丑时(1点至3点)、寅时(3点至5点)、卯时(5点至7点)、辰时(7点至9点)、巳时(9点至11点)、午时(11点至13点)、未时(13点至15点)、申时(15点至17点)、酉时(17点至19点)、戌时(19点至21点)、亥时(21点至23点)。所以时辰的地支只需要记忆一下就行了。
子时时辰的天干计算方法为(日干*2-1)。前面我们已经讲过日干的计算方法,2009年元旦的日干是丙,所以今天7月22日的日干为(大月份数+22-3)/10的余数+3=5,故其今天天干为戊,子时的天干则为(5*2-1)=9,为壬。那现在为申时,相差8个时辰,所以其天干为子时的天干壬往后推8个数,为庚。所以这个时辰的天干地支纪为庚申时。
到此我们所有的干支纪年、纪月、纪日、纪时就全都讲完了。

天干、地支纪年 月 日相关推荐

  1. 天干地支计算公式_日干支公式速算法,根据阴历或阳历推算日干天干地支方法...

    欲求日干支,必须要记得某年元旦那天的干支,以后再用公式推算.日干支的推算比较繁琐,只有以阳历来推算.因阳历每月的月大月小是固定的,在阳历每4年有一次闰二月,因此用阳历推算比较方便.用公历推算日干支,首 ...

  2. c++实现天干地支纪年法

    历史课上-- 老师:1894,甲午年,中日发生甲午战争-- 学生:家务是什么? 老师:甲午!天干地支纪年法. 学生:什么是田赶地址? 老师:-- 10和12的最小公倍数是60,所以每60年轮一次.最早 ...

  3. Java基础公元纪年法换算天干地支纪年法

    Java基础公元纪年法换算天干地支纪年法 计算方法: 公元年数-3,除以10余数可得天干: 公元年数-3,除以12余数可得地支: 对照表 十天干: 1-甲(jiǎ).2-乙(yǐ).3-丙(bǐng) ...

  4. java实现天干地支纪年

    实现将年份转换为天干地支纪年 文章没有文字说明,代码注释都写的非常清楚了,谢谢观看 /*** 计算天干:(年份-3)% 10 等于 对应天干的序号(1开始计数)* 计算地支:(年份-3)% 12 等于 ...

  5. Java基础公元纪年法换算天干地支纪年法(趣味)

    公元纪年法向天干地支纪年法换算 计算方法: 公元年数-3,除以10余数可得天干: 公元年数-3,除以12余数可得地支: Day3.java import java.util.Calendar; imp ...

  6. 天干地支纪年法中为什么是60年一个轮回,而不是120年

    中国古代的一种纪年法十干甲.乙.丙.丁.戊.己.庚.辛.壬.癸十二支子.丑.寅.卯.辰.巳.午.未.申.酉.戌.亥,鼠.牛.虎.兔.龙.蛇.马.羊.猴.鸡.狗.猪把干.支顺序配合因为天干地支纪年法是按 ...

  7. 【秒懂】天干地支纪年法

    文章目录 什么是天干地支 公元元年 尾数定天干 余数定地支 己亥杂诗 更一般化干支计算法 什么是天干地支 天干地支简称为干支, 十天干:甲(jiǎ).乙(yǐ).丙(bǐng).丁(dīng).戊(w ...

  8. 干支纪年java_天干地支纪年法 - osc_xcg0s5cw的个人空间 - OSCHINA - 中文开源技术交流社区...

    如何计算当前年份是天干地支哪一年? # -*- coding: utf-8 -*- ''' 判断今年是什么年份,例如:2019年为己亥年 ''' TG=['甲','乙','丙','丁','戊','己' ...

  9. 中国古代天干地支纪年法

    古人纪年,多用干支纪年法. 十天干者, 甲.乙.丙.丁.戊.己.庚.辛.壬.癸也 十二地支者,子.丑.寅.卯.辰.巳.午.未.申.酉.戌.亥也 干在上,支在下, 干支相配,不足则补位,补位有奇偶,奇补 ...

最新文章

  1. 将表中的值变成字段显示
  2. 细说Redis监控和告警
  3. How to learn wxPython
  4. 为什么机器学习工程师用PyTorch的多于TensorFlow?
  5. Access-Ctrol-Allow-Headers:*兼容问题导致的跨域失败
  6. linux下的I2C驱动记录(RK)
  7. long 和 int 的相互转换
  8. Richard Hamming - You and Your Research
  9. Python爬虫入门教程 42-100 爬取儿歌多多APP数据-手机APP爬虫部分
  10. 基于ARM的SoC设计入门
  11. 利用matlab实现卷积实验报告,matlab卷积实验报告.docx
  12. 26款Java开源项目,劝你千万别错过,适合所有程序员
  13. 2019你会被裁员吗?
  14. 利用python创建自定义的股票指数
  15. 百度地图 雷达/地理编码 功能使用
  16. 漫画分销系统服务器配置,漫画分销系统
  17. signature=dd4c0ce5ed341fbfafa07eb3d3275ec3,SIGNATURE-FREE BUFFER OVERFLOW ATTACK BLOCKER
  18. js 获取汉字首字母和汉字转拼音
  19. 位,字节,字,字长的区别是什么?
  20. 【原创】领导力文化-译稿

热门文章

  1. 七年级计算机基本结构,七年级信息技术计算机基本组成和工作原理
  2. python内置函数返回元素个数_Python内置函数
  3. 用C语言求斐波那契数1,1,2,3,5,8......
  4. 「小虎电商早报」2月24日 苏宁易购北区预计新开零售云门店906家
  5. 一个优秀的团队的重要性
  6. Linux配置sendmail实现PHP发送邮件
  7. 如何转型社交新零售电商?转型社交新零售的核心关键是什么?
  8. 华为路由器负载均衡_华为OSPF路由负载分担配置示例
  9. fiddler——抓苹果手机的包
  10. win11修改mac地址的方法