问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

已知纪日的天干地支,如何推算出日数?

发布网友 发布时间:2022-04-29 17:21

我来回答

1个回答

热心网友 时间:2023-10-23 02:42

从已知年份计算干支纪年很简单:年份数减3,除以10的余数是天干,除以12的余数是地
支。

从已知日期计算干支纪日的公式和蔡勒公式很相像,如下:

g = 4C + [C/4] + 5y + [y/4] + [3*(M+1) / 5] + d - 3
z = 8C + [C/4] + 5y + [y/4] + [3*(M+1) / 5] + d + 7 + i (奇数月i=0,偶数月i=6)

其中C是世纪数减一,y是年份后两位,M是月份,d是日数。1月和2月按上一年的13月和
14月来算。g除以10的余数是天干,z除以10的余数是地支。

巧妙运用和干支有关的几个计算公式,还可以在没有万年历的情况下推算出古书里的干
支纪日对应的公历日期。
------------------------------------------------------------------------------

  干支纪日,从夏朝就开始使用了。根据对中国古代历史典籍《春秋》中记载的日食的
研究,我国的干支纪日,从鲁隐公三年二月己巳日(公元前720年2月10日)开始,一直到
今天,都未曾间断。干支纪年的出现则略晚一些,直到东汉元和二年(公元85年)*才
下令在全国实行,至今也未曾间断。因此,凡是需要接触中国历史的人,总不免要遇到查
某一年的干支或某一日的干支,以及由年干支和日干支推算是哪一年或哪一日的问题。通
常,这类转换靠查历书都可以解决。但既然干支也是一个循环系统,自然也就有从年份和
日期求干支的公式。

  在介绍求年干支和日干支的公式前,先把干支的特点介绍一下。干支是天干和地支的
组合。天干有十个,即甲、乙、丙、丁、戊、己、庚、辛、壬、癸;地支有十二个,即
子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥。天干和地支从“甲子”开始,按顺
序逐一相配,各用到最后一个时,再从第一个开始继续相配,就形成了六十个干支,也称
“六十花甲子”。为什么是六十个干支呢?这个从数学上很容易回答。根据干支的构成条
件,其循环周期必然是天干数和地干数的最小公倍数。而60正是10和12的最小公倍数。

  如果我们把“甲子”编为1号,“乙丑”编为2号,这样编下去,就可以得到一个干支
和序号的对照表,如下:

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的余数就
是天干的序数(如果余数是0,则为最后一个天干癸),序号除以12的余数就是地支的序
数(如果余数是0,则为最后一个地支亥)。比如37号干支,因为37 mod 10=7(mod表示
取余数),对应的天干是庚,37 mod 12=1,对应的地支是子,所以37号干支就是庚子。
显然,一个整数除以10的余数就是它的个位数,这就使求天干更方便了。

  而由干支推它的序号,也不困难。这其实就是一个同余方程组的求解问题,我们用初
等数论中的中国剩余定理就可以解决。比如要算戊午的序号是多少,根据上面由序号得到
对应干支的原理,很容易得到如下方程组:

{ x mod 10 = 5
{ x mod 12 = 7.

其中x是待求的干支序号。根据中国剩余定理,有:

x ≡ 6 * 5 - 5 * 7 (mod 60) = 55,

即戊午的序号是55.这和上面的对照表的是一致的。一般地,若天干的序号为m,地支的
序号为n,则干支的序号为:

x ≡ 6m - 5n (mod 60) (1)

简单点说,如果6m-5n的结果是正数,这个数就是干支的序号;如果是负数,把它加上60
就是干支的序号。

  了解了干支及其序号的相互推算,下面我们先来介绍年干支的求算。需要说明的是,
干支纪年纪的是农历年,而不是公历年。但因为农历年的岁首和公历年的岁首相隔较近,
使农历年总是和某一公历年的大部分重合,因此,通常也用公历年的年份表示和它大部分
重合的农历年。这样我们就很容易给出农历年的干支序号为:

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

等价于

Y-3 = 60 * n + x,

其中n是Y-3除以60的商数。等式两边同时除以10,余数也必然相等。而右边第一项是60的
倍数,自然也是10的倍数,能够被10整数,于是Y-3除以10的余数就必然等于x除以10的余
数。

因此,其实我们完全用不着先求干支的序号,而可以分别求天干和地支,合起来就是干
支,这样就减少了一步运算。而对于年份的天干,同样只须看末尾一位。末尾为4的年份
的天干总是甲,末尾为5的年份的天干总是乙……依次类推。

  再来看日干支的求算。我们可以仿照星期的求算,得到一个比较直观的计算日干支的
公式如下:

G = (Y-1)*5 + [(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天。如果这个
世纪中末尾为00的年份是闰年,这个世纪就只有36525天;否则就只有36524天。我们不妨
称有36524天的世纪为“平世纪”,有36525天的世纪为“闰世纪”。对于平世纪,因为

36524 mod 60 = 44,

所以,每过一个平世纪,同一天的干支就向后推进44个序号。同样,每过一个闰世纪,同
一天的干支就向后推进45个序号。这就使我们很容易得到一个计算每个世纪第一年(年份
末尾为01)3月1日的公式:

G = 44C + [C/4] + 15, (4)

其中C是世纪数减一。

而计算任一年3月1日的干支的公式也可以很快得到:

G = 44C + [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) (6)



D' ≡ [3*(M+1) / 5] + d - 2 + i (mod 12) (奇数月i=0,偶数月i=6), (7)

其中,D'是从3月1日开始算起的累积天数,M是月份,d是日数。把(6)(7)两式和(5)式合
起来,再进行适当的化简,就得到了计算公历任意一天的天干和地支的公式:

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 + 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,

可以看出它们的形式非常相似,区别仅仅是几个常数的不同。

  尽管现在中国已经不用干支纪日了,但有时还是需要计算日干支的。比如,历法有所
谓“三伏”和“入梅”“出梅”,都和日干支有关。三伏包括初伏、中伏和末伏,是指夏
天最热的一段时间,入梅和出梅是指江南一带梅雨季节的开始和结束,本来是和气候有关
的用语。但因为古代没有准确的天气预报,无法准确预测三伏和入出梅的时间,所以就在
历书上硬性规定几个日子作为三伏开始和入出梅的日子,这样确定一个大致的日期以备参
考。现在虽然有了比较准确的天气预报,但三伏和入出梅作为一种传统历法,仍然流传下
来。

  历法规定夏至之后的第三个庚日为初伏开始,共十天;第四个庚日为中伏开始,十天
或二十天;立秋之后的第一个庚日为末伏开始,共十天。中伏的长度之所以不固定,是因
为夏至、立秋的日期和庚日的日期是逐年浮动的,立秋之后的第一个庚日可能是夏至之后
的第五个庚日,也可能是第六个庚日。如果是前者,中伏就只有十天;如果是后者,中伏
就长达二十天。注意如果夏至当天是庚日,夏至之后第一个庚日是指夏至之后第十天,而
不是夏至当天,这时初伏第一天就是夏至之后第三十天。同样,如果立秋当天是庚日,末
伏第一天就是立秋之后第十天,而不是立秋当天。入梅则是指芒种之后的第一个丙日,出
梅是指小暑之后的第一个未日,也有同样的规定。

  知道了这些,我们可以算一下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 + [20/4] + 5*4 + [4/4] + [3*(8+1) / 5] + 7 - 3
= 80 + 5 + 20 + 1 + 5 + 7 - 3
= 115,

是个戊日。立秋之后第一个庚日就是立秋之后第2天,也即8月9日,这天就是末伏第一
天。由此也可知,2004年的中伏只有十天。同样可以由芒种和小暑两节气的日期,算出
2004年的入梅日和出梅日分别是6月6日和7月15日。

  反过来,知道了年干支和日干支,求相应的年份和日期就相对麻烦一点了。因为干
支是循环使用的,所以必须先知道欲求对应年份和日期的干支是属于哪一次循环。比如
我们预先用公式(2)算出来1864、1924、1984年都是甲子年,如果要知道戊戌变法是哪
一年,首先要确定它是十九世纪末的事情,也即是属于1864年开始的这一个循环里。那
么,我们用公式(1)可以算出来戊戌的序号是35,于是戊戌年就是(1864-1)+35=1898年。
之所以要先减一,是因为甲子的序号为1,需要把这个序号先减去。

  至于日干支,因为古书里的日干支总是和年、月配合使用的,所以不难确定它属于
哪个循环。比如《明史·庄烈帝本纪》记载明崇祯皇帝朱由检在煤山自缢的日子是崇祯
十六年三月丁未。崇祯十六年就是公元1644年。三月虽然是农历的三月,但我们知道农
历的日期在公历里虽然是浮动的,但也不出一定的范围,比如农历三月初一,总是在
公历3月22日到4月19日之间浮动。因此,先来算1644年3月22日的干支。我们有:

g = 4 * 16 + [16/4] + 5 * 44 + [44/4] + [3*(3+1) / 5] + 22 - 3
= 64 + 4 + 220 + 11 + 2 + 22 - 3
= 320,

个位数是0,

z = g + 4C + 10
= 320 + 64 + 10
= 394,

除以12余10,所以这一天的干支是癸酉,其序号为6*0-5*10+60=10。而丁未的序号是
6*4-5*8+60=44,在癸未之后34天,因此三月丁未肯定是3月22日之后34天,即4月25
日。这就是说,崇祯自缢的日子是1644年4月25日,这和查万年历的结果是一致的。

热心网友 时间:2023-10-23 02:42

从已知年份计算干支纪年很简单:年份数减3,除以10的余数是天干,除以12的余数是地
支。

从已知日期计算干支纪日的公式和蔡勒公式很相像,如下:

g = 4C + [C/4] + 5y + [y/4] + [3*(M+1) / 5] + d - 3
z = 8C + [C/4] + 5y + [y/4] + [3*(M+1) / 5] + d + 7 + i (奇数月i=0,偶数月i=6)

其中C是世纪数减一,y是年份后两位,M是月份,d是日数。1月和2月按上一年的13月和
14月来算。g除以10的余数是天干,z除以10的余数是地支。

巧妙运用和干支有关的几个计算公式,还可以在没有万年历的情况下推算出古书里的干
支纪日对应的公历日期。
------------------------------------------------------------------------------

  干支纪日,从夏朝就开始使用了。根据对中国古代历史典籍《春秋》中记载的日食的
研究,我国的干支纪日,从鲁隐公三年二月己巳日(公元前720年2月10日)开始,一直到
今天,都未曾间断。干支纪年的出现则略晚一些,直到东汉元和二年(公元85年)*才
下令在全国实行,至今也未曾间断。因此,凡是需要接触中国历史的人,总不免要遇到查
某一年的干支或某一日的干支,以及由年干支和日干支推算是哪一年或哪一日的问题。通
常,这类转换靠查历书都可以解决。但既然干支也是一个循环系统,自然也就有从年份和
日期求干支的公式。

  在介绍求年干支和日干支的公式前,先把干支的特点介绍一下。干支是天干和地支的
组合。天干有十个,即甲、乙、丙、丁、戊、己、庚、辛、壬、癸;地支有十二个,即
子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥。天干和地支从“甲子”开始,按顺
序逐一相配,各用到最后一个时,再从第一个开始继续相配,就形成了六十个干支,也称
“六十花甲子”。为什么是六十个干支呢?这个从数学上很容易回答。根据干支的构成条
件,其循环周期必然是天干数和地干数的最小公倍数。而60正是10和12的最小公倍数。

  如果我们把“甲子”编为1号,“乙丑”编为2号,这样编下去,就可以得到一个干支
和序号的对照表,如下:

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的余数就
是天干的序数(如果余数是0,则为最后一个天干癸),序号除以12的余数就是地支的序
数(如果余数是0,则为最后一个地支亥)。比如37号干支,因为37 mod 10=7(mod表示
取余数),对应的天干是庚,37 mod 12=1,对应的地支是子,所以37号干支就是庚子。
显然,一个整数除以10的余数就是它的个位数,这就使求天干更方便了。

  而由干支推它的序号,也不困难。这其实就是一个同余方程组的求解问题,我们用初
等数论中的中国剩余定理就可以解决。比如要算戊午的序号是多少,根据上面由序号得到
对应干支的原理,很容易得到如下方程组:

{ x mod 10 = 5
{ x mod 12 = 7.

其中x是待求的干支序号。根据中国剩余定理,有:

x ≡ 6 * 5 - 5 * 7 (mod 60) = 55,

即戊午的序号是55.这和上面的对照表的是一致的。一般地,若天干的序号为m,地支的
序号为n,则干支的序号为:

x ≡ 6m - 5n (mod 60) (1)

简单点说,如果6m-5n的结果是正数,这个数就是干支的序号;如果是负数,把它加上60
就是干支的序号。

  了解了干支及其序号的相互推算,下面我们先来介绍年干支的求算。需要说明的是,
干支纪年纪的是农历年,而不是公历年。但因为农历年的岁首和公历年的岁首相隔较近,
使农历年总是和某一公历年的大部分重合,因此,通常也用公历年的年份表示和它大部分
重合的农历年。这样我们就很容易给出农历年的干支序号为:

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

等价于

Y-3 = 60 * n + x,

其中n是Y-3除以60的商数。等式两边同时除以10,余数也必然相等。而右边第一项是60的
倍数,自然也是10的倍数,能够被10整数,于是Y-3除以10的余数就必然等于x除以10的余
数。

因此,其实我们完全用不着先求干支的序号,而可以分别求天干和地支,合起来就是干
支,这样就减少了一步运算。而对于年份的天干,同样只须看末尾一位。末尾为4的年份
的天干总是甲,末尾为5的年份的天干总是乙……依次类推。

  再来看日干支的求算。我们可以仿照星期的求算,得到一个比较直观的计算日干支的
公式如下:

G = (Y-1)*5 + [(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天。如果这个
世纪中末尾为00的年份是闰年,这个世纪就只有36525天;否则就只有36524天。我们不妨
称有36524天的世纪为“平世纪”,有36525天的世纪为“闰世纪”。对于平世纪,因为

36524 mod 60 = 44,

所以,每过一个平世纪,同一天的干支就向后推进44个序号。同样,每过一个闰世纪,同
一天的干支就向后推进45个序号。这就使我们很容易得到一个计算每个世纪第一年(年份
末尾为01)3月1日的公式:

G = 44C + [C/4] + 15, (4)

其中C是世纪数减一。

而计算任一年3月1日的干支的公式也可以很快得到:

G = 44C + [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) (6)



D' ≡ [3*(M+1) / 5] + d - 2 + i (mod 12) (奇数月i=0,偶数月i=6), (7)

其中,D'是从3月1日开始算起的累积天数,M是月份,d是日数。把(6)(7)两式和(5)式合
起来,再进行适当的化简,就得到了计算公历任意一天的天干和地支的公式:

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 + 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,

可以看出它们的形式非常相似,区别仅仅是几个常数的不同。

  尽管现在中国已经不用干支纪日了,但有时还是需要计算日干支的。比如,历法有所
谓“三伏”和“入梅”“出梅”,都和日干支有关。三伏包括初伏、中伏和末伏,是指夏
天最热的一段时间,入梅和出梅是指江南一带梅雨季节的开始和结束,本来是和气候有关
的用语。但因为古代没有准确的天气预报,无法准确预测三伏和入出梅的时间,所以就在
历书上硬性规定几个日子作为三伏开始和入出梅的日子,这样确定一个大致的日期以备参
考。现在虽然有了比较准确的天气预报,但三伏和入出梅作为一种传统历法,仍然流传下
来。

  历法规定夏至之后的第三个庚日为初伏开始,共十天;第四个庚日为中伏开始,十天
或二十天;立秋之后的第一个庚日为末伏开始,共十天。中伏的长度之所以不固定,是因
为夏至、立秋的日期和庚日的日期是逐年浮动的,立秋之后的第一个庚日可能是夏至之后
的第五个庚日,也可能是第六个庚日。如果是前者,中伏就只有十天;如果是后者,中伏
就长达二十天。注意如果夏至当天是庚日,夏至之后第一个庚日是指夏至之后第十天,而
不是夏至当天,这时初伏第一天就是夏至之后第三十天。同样,如果立秋当天是庚日,末
伏第一天就是立秋之后第十天,而不是立秋当天。入梅则是指芒种之后的第一个丙日,出
梅是指小暑之后的第一个未日,也有同样的规定。

  知道了这些,我们可以算一下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 + [20/4] + 5*4 + [4/4] + [3*(8+1) / 5] + 7 - 3
= 80 + 5 + 20 + 1 + 5 + 7 - 3
= 115,

是个戊日。立秋之后第一个庚日就是立秋之后第2天,也即8月9日,这天就是末伏第一
天。由此也可知,2004年的中伏只有十天。同样可以由芒种和小暑两节气的日期,算出
2004年的入梅日和出梅日分别是6月6日和7月15日。

  反过来,知道了年干支和日干支,求相应的年份和日期就相对麻烦一点了。因为干
支是循环使用的,所以必须先知道欲求对应年份和日期的干支是属于哪一次循环。比如
我们预先用公式(2)算出来1864、1924、1984年都是甲子年,如果要知道戊戌变法是哪
一年,首先要确定它是十九世纪末的事情,也即是属于1864年开始的这一个循环里。那
么,我们用公式(1)可以算出来戊戌的序号是35,于是戊戌年就是(1864-1)+35=1898年。
之所以要先减一,是因为甲子的序号为1,需要把这个序号先减去。

  至于日干支,因为古书里的日干支总是和年、月配合使用的,所以不难确定它属于
哪个循环。比如《明史·庄烈帝本纪》记载明崇祯皇帝朱由检在煤山自缢的日子是崇祯
十六年三月丁未。崇祯十六年就是公元1644年。三月虽然是农历的三月,但我们知道农
历的日期在公历里虽然是浮动的,但也不出一定的范围,比如农历三月初一,总是在
公历3月22日到4月19日之间浮动。因此,先来算1644年3月22日的干支。我们有:

g = 4 * 16 + [16/4] + 5 * 44 + [44/4] + [3*(3+1) / 5] + 22 - 3
= 64 + 4 + 220 + 11 + 2 + 22 - 3
= 320,

个位数是0,

z = g + 4C + 10
= 320 + 64 + 10
= 394,

除以12余10,所以这一天的干支是癸酉,其序号为6*0-5*10+60=10。而丁未的序号是
6*4-5*8+60=44,在癸未之后34天,因此三月丁未肯定是3月22日之后34天,即4月25
日。这就是说,崇祯自缢的日子是1644年4月25日,这和查万年历的结果是一致的。

热心网友 时间:2023-10-23 02:43

从已知年份计算干支纪年很简单:年份数减3,除以10的余数是天干,除以12的余数是地
支。

从已知日期计算干支纪日的公式和蔡勒公式很相像,如下:

g = 4C + [C/4] + 5y + [y/4] + [3*(M+1) / 5] + d - 3
z = 8C + [C/4] + 5y + [y/4] + [3*(M+1) / 5] + d + 7 + i (奇数月i=0,偶数月i=6)

其中C是世纪数减一,y是年份后两位,M是月份,d是日数。1月和2月按上一年的13月和
14月来算。g除以10的余数是天干,z除以10的余数是地支。

巧妙运用和干支有关的几个计算公式,还可以在没有万年历的情况下推算出古书里的干
支纪日对应的公历日期。
------------------------------------------------------------------------------

  干支纪日,从夏朝就开始使用了。根据对中国古代历史典籍《春秋》中记载的日食的
研究,我国的干支纪日,从鲁隐公三年二月己巳日(公元前720年2月10日)开始,一直到
今天,都未曾间断。干支纪年的出现则略晚一些,直到东汉元和二年(公元85年)*才
下令在全国实行,至今也未曾间断。因此,凡是需要接触中国历史的人,总不免要遇到查
某一年的干支或某一日的干支,以及由年干支和日干支推算是哪一年或哪一日的问题。通
常,这类转换靠查历书都可以解决。但既然干支也是一个循环系统,自然也就有从年份和
日期求干支的公式。

  在介绍求年干支和日干支的公式前,先把干支的特点介绍一下。干支是天干和地支的
组合。天干有十个,即甲、乙、丙、丁、戊、己、庚、辛、壬、癸;地支有十二个,即
子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥。天干和地支从“甲子”开始,按顺
序逐一相配,各用到最后一个时,再从第一个开始继续相配,就形成了六十个干支,也称
“六十花甲子”。为什么是六十个干支呢?这个从数学上很容易回答。根据干支的构成条
件,其循环周期必然是天干数和地干数的最小公倍数。而60正是10和12的最小公倍数。

  如果我们把“甲子”编为1号,“乙丑”编为2号,这样编下去,就可以得到一个干支
和序号的对照表,如下:

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的余数就
是天干的序数(如果余数是0,则为最后一个天干癸),序号除以12的余数就是地支的序
数(如果余数是0,则为最后一个地支亥)。比如37号干支,因为37 mod 10=7(mod表示
取余数),对应的天干是庚,37 mod 12=1,对应的地支是子,所以37号干支就是庚子。
显然,一个整数除以10的余数就是它的个位数,这就使求天干更方便了。

  而由干支推它的序号,也不困难。这其实就是一个同余方程组的求解问题,我们用初
等数论中的中国剩余定理就可以解决。比如要算戊午的序号是多少,根据上面由序号得到
对应干支的原理,很容易得到如下方程组:

{ x mod 10 = 5
{ x mod 12 = 7.

其中x是待求的干支序号。根据中国剩余定理,有:

x ≡ 6 * 5 - 5 * 7 (mod 60) = 55,

即戊午的序号是55.这和上面的对照表的是一致的。一般地,若天干的序号为m,地支的
序号为n,则干支的序号为:

x ≡ 6m - 5n (mod 60) (1)

简单点说,如果6m-5n的结果是正数,这个数就是干支的序号;如果是负数,把它加上60
就是干支的序号。

  了解了干支及其序号的相互推算,下面我们先来介绍年干支的求算。需要说明的是,
干支纪年纪的是农历年,而不是公历年。但因为农历年的岁首和公历年的岁首相隔较近,
使农历年总是和某一公历年的大部分重合,因此,通常也用公历年的年份表示和它大部分
重合的农历年。这样我们就很容易给出农历年的干支序号为:

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

等价于

Y-3 = 60 * n + x,

其中n是Y-3除以60的商数。等式两边同时除以10,余数也必然相等。而右边第一项是60的
倍数,自然也是10的倍数,能够被10整数,于是Y-3除以10的余数就必然等于x除以10的余
数。

因此,其实我们完全用不着先求干支的序号,而可以分别求天干和地支,合起来就是干
支,这样就减少了一步运算。而对于年份的天干,同样只须看末尾一位。末尾为4的年份
的天干总是甲,末尾为5的年份的天干总是乙……依次类推。

  再来看日干支的求算。我们可以仿照星期的求算,得到一个比较直观的计算日干支的
公式如下:

G = (Y-1)*5 + [(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天。如果这个
世纪中末尾为00的年份是闰年,这个世纪就只有36525天;否则就只有36524天。我们不妨
称有36524天的世纪为“平世纪”,有36525天的世纪为“闰世纪”。对于平世纪,因为

36524 mod 60 = 44,

所以,每过一个平世纪,同一天的干支就向后推进44个序号。同样,每过一个闰世纪,同
一天的干支就向后推进45个序号。这就使我们很容易得到一个计算每个世纪第一年(年份
末尾为01)3月1日的公式:

G = 44C + [C/4] + 15, (4)

其中C是世纪数减一。

而计算任一年3月1日的干支的公式也可以很快得到:

G = 44C + [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) (6)



D' ≡ [3*(M+1) / 5] + d - 2 + i (mod 12) (奇数月i=0,偶数月i=6), (7)

其中,D'是从3月1日开始算起的累积天数,M是月份,d是日数。把(6)(7)两式和(5)式合
起来,再进行适当的化简,就得到了计算公历任意一天的天干和地支的公式:

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 + 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,

可以看出它们的形式非常相似,区别仅仅是几个常数的不同。

  尽管现在中国已经不用干支纪日了,但有时还是需要计算日干支的。比如,历法有所
谓“三伏”和“入梅”“出梅”,都和日干支有关。三伏包括初伏、中伏和末伏,是指夏
天最热的一段时间,入梅和出梅是指江南一带梅雨季节的开始和结束,本来是和气候有关
的用语。但因为古代没有准确的天气预报,无法准确预测三伏和入出梅的时间,所以就在
历书上硬性规定几个日子作为三伏开始和入出梅的日子,这样确定一个大致的日期以备参
考。现在虽然有了比较准确的天气预报,但三伏和入出梅作为一种传统历法,仍然流传下
来。

  历法规定夏至之后的第三个庚日为初伏开始,共十天;第四个庚日为中伏开始,十天
或二十天;立秋之后的第一个庚日为末伏开始,共十天。中伏的长度之所以不固定,是因
为夏至、立秋的日期和庚日的日期是逐年浮动的,立秋之后的第一个庚日可能是夏至之后
的第五个庚日,也可能是第六个庚日。如果是前者,中伏就只有十天;如果是后者,中伏
就长达二十天。注意如果夏至当天是庚日,夏至之后第一个庚日是指夏至之后第十天,而
不是夏至当天,这时初伏第一天就是夏至之后第三十天。同样,如果立秋当天是庚日,末
伏第一天就是立秋之后第十天,而不是立秋当天。入梅则是指芒种之后的第一个丙日,出
梅是指小暑之后的第一个未日,也有同样的规定。

  知道了这些,我们可以算一下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 + [20/4] + 5*4 + [4/4] + [3*(8+1) / 5] + 7 - 3
= 80 + 5 + 20 + 1 + 5 + 7 - 3
= 115,

是个戊日。立秋之后第一个庚日就是立秋之后第2天,也即8月9日,这天就是末伏第一
天。由此也可知,2004年的中伏只有十天。同样可以由芒种和小暑两节气的日期,算出
2004年的入梅日和出梅日分别是6月6日和7月15日。

  反过来,知道了年干支和日干支,求相应的年份和日期就相对麻烦一点了。因为干
支是循环使用的,所以必须先知道欲求对应年份和日期的干支是属于哪一次循环。比如
我们预先用公式(2)算出来1864、1924、1984年都是甲子年,如果要知道戊戌变法是哪
一年,首先要确定它是十九世纪末的事情,也即是属于1864年开始的这一个循环里。那
么,我们用公式(1)可以算出来戊戌的序号是35,于是戊戌年就是(1864-1)+35=1898年。
之所以要先减一,是因为甲子的序号为1,需要把这个序号先减去。

  至于日干支,因为古书里的日干支总是和年、月配合使用的,所以不难确定它属于
哪个循环。比如《明史·庄烈帝本纪》记载明崇祯皇帝朱由检在煤山自缢的日子是崇祯
十六年三月丁未。崇祯十六年就是公元1644年。三月虽然是农历的三月,但我们知道农
历的日期在公历里虽然是浮动的,但也不出一定的范围,比如农历三月初一,总是在
公历3月22日到4月19日之间浮动。因此,先来算1644年3月22日的干支。我们有:

g = 4 * 16 + [16/4] + 5 * 44 + [44/4] + [3*(3+1) / 5] + 22 - 3
= 64 + 4 + 220 + 11 + 2 + 22 - 3
= 320,

个位数是0,

z = g + 4C + 10
= 320 + 64 + 10
= 394,

除以12余10,所以这一天的干支是癸酉,其序号为6*0-5*10+60=10。而丁未的序号是
6*4-5*8+60=44,在癸未之后34天,因此三月丁未肯定是3月22日之后34天,即4月25
日。这就是说,崇祯自缢的日子是1644年4月25日,这和查万年历的结果是一致的。

热心网友 时间:2023-10-23 02:43

从已知年份计算干支纪年很简单:年份数减3,除以10的余数是天干,除以12的余数是地
支。

从已知日期计算干支纪日的公式和蔡勒公式很相像,如下:

g = 4C + [C/4] + 5y + [y/4] + [3*(M+1) / 5] + d - 3
z = 8C + [C/4] + 5y + [y/4] + [3*(M+1) / 5] + d + 7 + i (奇数月i=0,偶数月i=6)

其中C是世纪数减一,y是年份后两位,M是月份,d是日数。1月和2月按上一年的13月和
14月来算。g除以10的余数是天干,z除以10的余数是地支。

巧妙运用和干支有关的几个计算公式,还可以在没有万年历的情况下推算出古书里的干
支纪日对应的公历日期。
------------------------------------------------------------------------------

  干支纪日,从夏朝就开始使用了。根据对中国古代历史典籍《春秋》中记载的日食的
研究,我国的干支纪日,从鲁隐公三年二月己巳日(公元前720年2月10日)开始,一直到
今天,都未曾间断。干支纪年的出现则略晚一些,直到东汉元和二年(公元85年)*才
下令在全国实行,至今也未曾间断。因此,凡是需要接触中国历史的人,总不免要遇到查
某一年的干支或某一日的干支,以及由年干支和日干支推算是哪一年或哪一日的问题。通
常,这类转换靠查历书都可以解决。但既然干支也是一个循环系统,自然也就有从年份和
日期求干支的公式。

  在介绍求年干支和日干支的公式前,先把干支的特点介绍一下。干支是天干和地支的
组合。天干有十个,即甲、乙、丙、丁、戊、己、庚、辛、壬、癸;地支有十二个,即
子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥。天干和地支从“甲子”开始,按顺
序逐一相配,各用到最后一个时,再从第一个开始继续相配,就形成了六十个干支,也称
“六十花甲子”。为什么是六十个干支呢?这个从数学上很容易回答。根据干支的构成条
件,其循环周期必然是天干数和地干数的最小公倍数。而60正是10和12的最小公倍数。

  如果我们把“甲子”编为1号,“乙丑”编为2号,这样编下去,就可以得到一个干支
和序号的对照表,如下:

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的余数就
是天干的序数(如果余数是0,则为最后一个天干癸),序号除以12的余数就是地支的序
数(如果余数是0,则为最后一个地支亥)。比如37号干支,因为37 mod 10=7(mod表示
取余数),对应的天干是庚,37 mod 12=1,对应的地支是子,所以37号干支就是庚子。
显然,一个整数除以10的余数就是它的个位数,这就使求天干更方便了。

  而由干支推它的序号,也不困难。这其实就是一个同余方程组的求解问题,我们用初
等数论中的中国剩余定理就可以解决。比如要算戊午的序号是多少,根据上面由序号得到
对应干支的原理,很容易得到如下方程组:

{ x mod 10 = 5
{ x mod 12 = 7.

其中x是待求的干支序号。根据中国剩余定理,有:

x ≡ 6 * 5 - 5 * 7 (mod 60) = 55,

即戊午的序号是55.这和上面的对照表的是一致的。一般地,若天干的序号为m,地支的
序号为n,则干支的序号为:

x ≡ 6m - 5n (mod 60) (1)

简单点说,如果6m-5n的结果是正数,这个数就是干支的序号;如果是负数,把它加上60
就是干支的序号。

  了解了干支及其序号的相互推算,下面我们先来介绍年干支的求算。需要说明的是,
干支纪年纪的是农历年,而不是公历年。但因为农历年的岁首和公历年的岁首相隔较近,
使农历年总是和某一公历年的大部分重合,因此,通常也用公历年的年份表示和它大部分
重合的农历年。这样我们就很容易给出农历年的干支序号为:

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

等价于

Y-3 = 60 * n + x,

其中n是Y-3除以60的商数。等式两边同时除以10,余数也必然相等。而右边第一项是60的
倍数,自然也是10的倍数,能够被10整数,于是Y-3除以10的余数就必然等于x除以10的余
数。

因此,其实我们完全用不着先求干支的序号,而可以分别求天干和地支,合起来就是干
支,这样就减少了一步运算。而对于年份的天干,同样只须看末尾一位。末尾为4的年份
的天干总是甲,末尾为5的年份的天干总是乙……依次类推。

  再来看日干支的求算。我们可以仿照星期的求算,得到一个比较直观的计算日干支的
公式如下:

G = (Y-1)*5 + [(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天。如果这个
世纪中末尾为00的年份是闰年,这个世纪就只有36525天;否则就只有36524天。我们不妨
称有36524天的世纪为“平世纪”,有36525天的世纪为“闰世纪”。对于平世纪,因为

36524 mod 60 = 44,

所以,每过一个平世纪,同一天的干支就向后推进44个序号。同样,每过一个闰世纪,同
一天的干支就向后推进45个序号。这就使我们很容易得到一个计算每个世纪第一年(年份
末尾为01)3月1日的公式:

G = 44C + [C/4] + 15, (4)

其中C是世纪数减一。

而计算任一年3月1日的干支的公式也可以很快得到:

G = 44C + [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) (6)



D' ≡ [3*(M+1) / 5] + d - 2 + i (mod 12) (奇数月i=0,偶数月i=6), (7)

其中,D'是从3月1日开始算起的累积天数,M是月份,d是日数。把(6)(7)两式和(5)式合
起来,再进行适当的化简,就得到了计算公历任意一天的天干和地支的公式:

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 + 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,

可以看出它们的形式非常相似,区别仅仅是几个常数的不同。

  尽管现在中国已经不用干支纪日了,但有时还是需要计算日干支的。比如,历法有所
谓“三伏”和“入梅”“出梅”,都和日干支有关。三伏包括初伏、中伏和末伏,是指夏
天最热的一段时间,入梅和出梅是指江南一带梅雨季节的开始和结束,本来是和气候有关
的用语。但因为古代没有准确的天气预报,无法准确预测三伏和入出梅的时间,所以就在
历书上硬性规定几个日子作为三伏开始和入出梅的日子,这样确定一个大致的日期以备参
考。现在虽然有了比较准确的天气预报,但三伏和入出梅作为一种传统历法,仍然流传下
来。

  历法规定夏至之后的第三个庚日为初伏开始,共十天;第四个庚日为中伏开始,十天
或二十天;立秋之后的第一个庚日为末伏开始,共十天。中伏的长度之所以不固定,是因
为夏至、立秋的日期和庚日的日期是逐年浮动的,立秋之后的第一个庚日可能是夏至之后
的第五个庚日,也可能是第六个庚日。如果是前者,中伏就只有十天;如果是后者,中伏
就长达二十天。注意如果夏至当天是庚日,夏至之后第一个庚日是指夏至之后第十天,而
不是夏至当天,这时初伏第一天就是夏至之后第三十天。同样,如果立秋当天是庚日,末
伏第一天就是立秋之后第十天,而不是立秋当天。入梅则是指芒种之后的第一个丙日,出
梅是指小暑之后的第一个未日,也有同样的规定。

  知道了这些,我们可以算一下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 + [20/4] + 5*4 + [4/4] + [3*(8+1) / 5] + 7 - 3
= 80 + 5 + 20 + 1 + 5 + 7 - 3
= 115,

是个戊日。立秋之后第一个庚日就是立秋之后第2天,也即8月9日,这天就是末伏第一
天。由此也可知,2004年的中伏只有十天。同样可以由芒种和小暑两节气的日期,算出
2004年的入梅日和出梅日分别是6月6日和7月15日。

  反过来,知道了年干支和日干支,求相应的年份和日期就相对麻烦一点了。因为干
支是循环使用的,所以必须先知道欲求对应年份和日期的干支是属于哪一次循环。比如
我们预先用公式(2)算出来1864、1924、1984年都是甲子年,如果要知道戊戌变法是哪
一年,首先要确定它是十九世纪末的事情,也即是属于1864年开始的这一个循环里。那
么,我们用公式(1)可以算出来戊戌的序号是35,于是戊戌年就是(1864-1)+35=1898年。
之所以要先减一,是因为甲子的序号为1,需要把这个序号先减去。

  至于日干支,因为古书里的日干支总是和年、月配合使用的,所以不难确定它属于
哪个循环。比如《明史·庄烈帝本纪》记载明崇祯皇帝朱由检在煤山自缢的日子是崇祯
十六年三月丁未。崇祯十六年就是公元1644年。三月虽然是农历的三月,但我们知道农
历的日期在公历里虽然是浮动的,但也不出一定的范围,比如农历三月初一,总是在
公历3月22日到4月19日之间浮动。因此,先来算1644年3月22日的干支。我们有:

g = 4 * 16 + [16/4] + 5 * 44 + [44/4] + [3*(3+1) / 5] + 22 - 3
= 64 + 4 + 220 + 11 + 2 + 22 - 3
= 320,

个位数是0,

z = g + 4C + 10
= 320 + 64 + 10
= 394,

除以12余10,所以这一天的干支是癸酉,其序号为6*0-5*10+60=10。而丁未的序号是
6*4-5*8+60=44,在癸未之后34天,因此三月丁未肯定是3月22日之后34天,即4月25
日。这就是说,崇祯自缢的日子是1644年4月25日,这和查万年历的结果是一致的。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
叶罗丽精灵梦小游戏有吗? 女孩爱玩化妆换衣服的游戏 洋娃娃类似的游戏推荐 女生换装小游戏有哪些 哪一个换装游戏是古代的宫廷小花仙 女生换装小游戏有哪些 有没有比较好玩的纯古风换装单机游戏啊 父母走了,如何怀念? 如何在失去亲人后怀念他们呢? 父亲过世,如何怀念 U盘损坏数据恢复的有效方法使用专业工具和技巧来恢复U盘中的损坏... ...格式化的U盘中的数据文件简单有效的数据恢复方法和注意事项_百度知 ... 手机格式化恢复技巧教你简单有效地恢复误格式化的手机数据 大众09G变速箱可以加6速双离合齿轮油吗?? 历书中的甲,乙,丙,丁,戊……日怎样推算和判别? 2011款新宝来自动变速箱是爱信的09g吗 2012年至2013年自动挡朗逸用么型号变速箱油? 生日的天干地支如何计算 用天干计算,一个月里有几个丁日呢? 新速腾的1.6L是DSG变速箱吗? 2013年上海大众桑塔纳是属于cvt还是双离合? 天干中的,丁日是几号?如何算的呢? 甲乙日 庚辛日 丙丁日 是指得那一天? 怎么计算的? 是什么历法? 昕锐自动挡是不是双离合 甲乙丙丁戊己庚辛壬癸时间是怎么计算的? 甲年过几年是乙年? 如何从波箱外观来判断是干式双离合还是湿式双离合?波箱型号从哪里看?比如大众09G是看波箱外壳铭牌吗 甲乙丙丁日怎么算 高尔夫7 2016款 1.6l 自动舒适型 是不是双离合 tf-60sn/09g变速箱参数 爱信09g和09m有什么区别 甲乙丙丁日怎么算? 途安L双离合现在是什么型号 变速箱09g跟dsg如何分辨 斯柯达明锐的变速箱是采用那款? 如何算出古人用天干地支记录的日子具体是阳历哪一天? 宝来自动挡10到14年的变速箱通用吗? 天干地支怎么计算日 一汽大众速腾1.4T的是双离合器好还是自动挡的好? 爱思助手对苹果手机有影响吗 爱希特多是日本品牌吗?求解 学生党可以吃爱希特多胶原蛋白冻吗? 苹果手机不小心删除了爱思助手怎么办 爱希特多胶原蛋白减肥的可以吃吗? 爱希特多胶原蛋白品牌是日本的吗? 大家听说过爱希特多吗? 想面部补水吃爱希特多胶原蛋白冻有用吗? 爱思助手卸载了怎么办? 爱希特胶原蛋白多有人听过吗?这款产品怎么样? 铁塔换电电池是什么接口 爱希特胶原蛋白靠谱吗?价位不高不低的,有人用过的么? 铁塔换电的电池插头是什么样的 铁塔换电如何改装转换线 补充胶原蛋白有哪些误区啊,没买过有没有可以推荐的产品,或者需要避雷的地方,求告知?