根据公历日期计算当日干支

上传人:宝路 文档编号:21767513 上传时间:2017-11-24 格式:DOC 页数:9 大小:42.85KB
返回 下载 相关 举报
根据公历日期计算当日干支_第1页
第1页 / 共9页
根据公历日期计算当日干支_第2页
第2页 / 共9页
根据公历日期计算当日干支_第3页
第3页 / 共9页
根据公历日期计算当日干支_第4页
第4页 / 共9页
根据公历日期计算当日干支_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《根据公历日期计算当日干支》由会员分享,可在线阅读,更多相关《根据公历日期计算当日干支(9页珍藏版)》请在金锄头文库上搜索。

1、1根据公历日期计算当日干支一、口诀: 乘五除四九加日, 双月间隔三十天。 一二自加整少一, 三五七八十尾前。 二、举例说明: 例一:1996 年 1 月 16 日 (965964916)608 余 49,49 即为六十甲子序数。9对应天干壬,49 除 12 余 1 对应地支子,对应干支为“壬子” 。 例二:1997 年 2 月 16 日 (975974916302)609 余 26,26 即为六十甲子序数。6 对应天干己,26 除 12 余 2 对应地支丑,对应干支为“己丑” 。 例三:1998 年 3 月 16 日 (985984916)608 余 59,对应干支为“壬戌” 。 例四:199

2、9 年 4 月 16 日 (995994916301)609 余 35,对应干支为“戊戌”。 例五:2000 年 7 月 16 日 (100510049162)609 余 12,对应干支为“乙亥” 。2例六:20001 年 10 月 16 日 (10151014916430)609 余 49,对应干支为“壬子” 。 三、注解: 第三句中的“整少一” ,为能被 4 整除之年一二月份比其他三年都要少加一;第四句反映的是大月规律,即 8 月加 3、11 月加 5,依此类推) 。在介绍求年干支和日干支的公式前,先把干支的特点介绍一下。干支是天干和地支的组合。天干有十个,即甲、乙、丙、丁、戊、己、庚、辛

3、、壬、癸;地支有十二个,即子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥。天干和地支从“甲子”开始,按顺序逐一相配,各用到最后一个时,再从第一个开始继续相配,就形成了六十个干支,也称“六十花甲子”。为什么是六十个干支呢?这个从数学上很容易回答。根据干支的构成条件,其循环周期必然是天干数和地干数的最小公倍数。而 60 正是 10 和 12的最小公倍数。 如果我们把“甲子”编为 1 号, “乙丑”编为 2 号,这样编下去,就可以得到一个干支和序号的对照表,如下: 1.甲子 2.乙丑 3.丙寅 4.丁卯 5.戊辰 6.己巳 7.庚午 8.辛未 9.壬申 10.癸酉 11.甲戌 12.乙亥 13.丙子

4、 14.丁丑 15.戊寅 16.己卯 17.庚辰 18.辛巳 19.壬午 20.癸未 21.甲申 22.乙酉 23.丙戌 24.丁亥 25.戊子 26.己丑 27.庚寅 28.辛卯 29.壬辰 30.癸巳 331.甲午 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.癸亥 细心观察这张表,不难发现,由序号

5、得到对应干支是很容易的,序号除以 10 的余数就是天干的序数(如果余数是 0,则为最后一个天干癸) ,序号除以 12 的余数就是地支的序 数(如果余数是 0,则为最后一个地支亥) 。比如 37 号干支,因为 37 mod 10=7( mod 表示取余数) ,对应的天干是庚,37 mod 12=1,对应的地支是子,所以 37 号干支就是庚子。显然,一个整数除以 10 的余数就是它的个位数,这就使求天干更方便了。 而由干支推它的序号,也不困难。这其实就是一个同余方程组的求解问题,我们用初等数论中的中国剩余定理就可以解决。比如要算戊午的序号是多少,根据上面由序号得到对应干支的原理,很容易得到如下方程

6、组: x mod 10 = 5 x mod 12 = 7 其中 x 是待求的干支序号。根据中国剩余定理,有: x 6 * 5 - 5 * 7 (mod 60) = 55, 即戊午的序号是 55这和上面的对照表的是一致的。一般地,若天干的序号为 m,地支的序号为 n,则干支的序号为: 4x 6m - 5n (mod 60) (1) 简单点说,如果 6m-5n 的结果是正数,这个数就是干支的序号;如果是负数,把它加上 60 就是干支的序号。 了解了干支及其序号的相互推算,下面我们先来介绍年干支的求算。需要说明的是,干支纪年纪的是农历年,而不是公历年。但因为农历年的岁首和公历年的岁首相隔较近,使农历

7、年总是和某一公历年的大部分重合,因此,通常也用公历年的年份表示和它大部分重合的农历年。这样我们就很容易给出农历年的干支序号为: x = (Y-3) mod 60, (2) 其中 Y 是年份。得到了干支序号 x,就可以求出相应的干支来。比如2004 年的干支序号: x = (2004-3) mod 60 = 2001 mod 60 = 21, 21 mod 10=1,天干为甲,21 mod 12=9,地支为申,因此,2004 年是甲申年。 细心观察,我们可以发现,其实用 Y-3 直接除以 10,就可以得到天干,用 Y-3 直接除以 12,就可以得到地支。这是因为 x = (Y-3) mod 60

8、 等价于 Y-3 = 60 * n + x, 其中 n 是 Y-3 除以 60 的商数。等式两边同时除以 10,余数也必然相等。而右边第一项是 60 的倍数,自然也是 10 的倍数,能够被 10 整数,于是 Y-3 除以 10 的余数就必然等于 x 除以 10 的余数。 5因此,其实我们完全用不着先求干支的序号,而可以分别求天干和地支,合起来就是干支,这样就减少了一步运算。而对于年份的天干,同样只须看末尾一位。末尾为 4 的年份的天干总是甲,末尾为 5 的年份的天干总是乙依次类推。 再来看日干支的求算。我们可以仿照星期的求算,得到一个比较直观的计算日干支的公式如下: G = (Y-1)*5 +

9、 (Y-1)/4 - (Y-1)/100 + (Y-1)/400 + D + 15, (3) 其中 Y 是年份,D 是累积天数,.表示取商数,也就是只取计算结果的整数部分。把 G 除以 60,余数就是干支的序号。或者把 G 除以 10或 12,可以直接得到日天干和日地支。不过,和形式相似的求星期的公式一样,这个公式还不够简炼,特别是第一项(Y-1)*5,在 Y 为四位数年份时,计算出来的结果是一个较大的四位数或五位数,口算很不方便。 我们用推导蔡勒公式的办法,可以改进这个公式。先来看和年份有关的部分的改进。我们知道,按公历的置闰规则,一个世纪的总天数可能是36524 天,或 36525 天。如

10、果这个世纪中末尾为 00 的年份是闰年,这个世纪就只有 36525 天;否则就只有 36524 天。我们不妨称有 36524 天的世纪为“平世纪” ,有 36525 天的世纪为“闰世纪” 。对于平世纪,因为 36524 mod 60 = 44, 所以,每过一个平世纪,同一天的干支就向后推进 44 个序号。同样,每过一个闰世纪,同一天的干支就向后推进 45 个序号。这就使我们很容易得到一个计算每个世纪第一年(年份末尾为 01)3 月 1 日的公式: G = 44C + C/4 + 15, (4) 6其中 C 是世纪数减一。 而计算任一年 3 月 1 日的干支的公式也可以很快得到: G = 44C

11、 + C/4 + 5(y-1) + y/4 + 15, 即 G = 44C + C/4 + 5y + y/4 + 10, (5) 其中 y 是年份后两位数字。 下面我们再列出每月天数: 月份: 1 月2 月 3 月4 月5 月6 月7 月8 月9 月10 月11 月12 月 - 天数: 31 28(29) 31 30 31 30 31 31 30 31 30 31 减 30 后的 剩余天数: 1 -2(-1) 1 0 1 0 1 1 0 1 0 1 如果把 1 月和 2 月看成是上一年的 13 月和 14 月,同样可以得到下面的式子: D 3*(M+1) / 5 + d - 2 (mod 10

12、) (6) 及 D 3*(M+1) / 5 + d - 2 + i (mod 12) (奇数月 i=0,偶数月 i=6), (7) 其中,D是从 3 月 1 日开始算起的累积天数,M 是月份,d 是日数。把(6)(7)两式和 (5)式合起来,再进行适当的化简,就得到了计算公历任意7一天的天干和地支的公式: g = 4C + C/4 + 5y + y/4 + 3*(M+1) / 5 + d - 3; (8) z = 8C + C/4 + 5y + y/4 + 3*(M+1) / 5 + d + 7 + i (奇数月 i=0,偶数月 i=6) (9) 如果先求得了 g,那么 z = g + 4C

13、+ 10 + i (奇数月 i=0,偶数月 i=6) (10) g 的个位数就是天干序号,z 除以 12 的余数就是地支序号。这里需要再次强调:1 月和 2 月是当做上一年的 13 月和 14 月来算的,因此 C 和 y也要按上一年的年份来取值。 我们可以把(8)(9) 两式和蔡勒公式对比一下: W = -2C + C/4 + y + y/4 + 13*(M+1) / 5 + d - 1, 可以看出它们的形式非常相似,区别仅仅是几个常数的不同。 尽管现在中国已经不用干支纪日了,但有时还是需要计算日干支的。比如,历法有所谓“三伏”和“入梅” “出梅” ,都和日干支有关。三伏包括初伏、中伏和末伏,

14、是指夏天最热的一段时间,入梅和出梅是指江南一带梅雨季节的开始和结束,本来是和气候有关的用语。但因为古代没有准确的天气预报,无法准确预测三伏和入出梅的时间,所以就在历书上硬性规定几个日子作为三伏开始和入出梅的日子,这样确定一个大致的日期以备参考。现在虽然有了比较准确的天气预报,但三伏和入出梅作为一种传统历法,仍然流传下来。 历法规定夏至之后的第三个庚日为初伏开始,共十天;第四个庚日为8中伏开始,十天或二十天;立秋之后的第一个庚日为末伏开始,共十天。中伏的长度之所以不固定,是因为夏至、立秋的日期和庚日的日期是逐年浮动的,立秋之后的第一个庚日可能是夏至之后的第五个庚日,也可能是第六个庚日。如果是前者

15、,中伏就只有十天;如果是后者,中伏就长达二十天。注意如果夏至当天是庚日,夏至之后第一个庚日是指夏至之后第十天,而不是夏至当天,这时初伏第一天就是夏至之后第三十天。同样,如果立秋当天是庚日,末伏第一天就是立秋之后第十天,而不是立秋当天。入梅则是指芒种之后的第一个丙日,出梅是指小暑之后的第一个未日,也有同样的规定。 知道了这些,我们可以算一下 2004 年的初伏、中伏和末伏都是什么日子。这需要先知道夏至和立秋的日子。如果知道夏至是 6 月 21 日,立秋是 8 月 7 日,那么运用公式(8),夏至这天的 g 为: g = 4 * 20 + 20/4 + 5*4 + 4/4 + 3*(6+1) / 5 + 21 - 3 = 80 + 5 + 20 + 1 + 4 + 21 - 3 = 128, 个位数是 8,天干是辛。夏至之后第三个庚日就是夏至之后第 29 天,也就是 7 月 20 日,这天也就是初伏第一天。中伏第一天则是 7 月 30 日。同样可算出立秋这天的 g 为: g = 4 * 20 +

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号