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

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

一、口诀:

乘五除四九加日,

双月间隔三十天。

一二自加整少一,

三五七八十尾前。

二、举例说明:

例一:1996年1月16日

(96×5+96÷4+9+16)÷60=8余49,49即为六十甲子序数。9对应天干壬,49除12余1对应地支子,对应干支为“壬子”。

例二:1997年2月16日

(97×5+97÷4+9+16+30+2)÷60=9余26,26即为六十甲子序数。6对应天干己,26除12余2对应地支丑,对应干支为“己丑”。

例三:1998年3月16日

(98×5+98÷4+9+16)÷60=8余59,对应干支为“壬戌”。

例四:1999年4月16日

(99×5+99÷4+9+16+30+1)÷60=9余35,对应干支为“戊戌”。 例五:2000年7月16日

(100×5+100÷4+9+16+2)÷60=9余12,对应干支为“乙亥”。 例六:20001年10月16日

(101×5+101÷4+9+16+4+30)÷60=9余49,对应干支为“壬子”。

三、注解:

第三句中的“整少一”,为能被4整除之年一二月份比其他三年都要少加一;第四句反映的是大月规律,即8月加3、11月加5,依此类推)。

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

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

一、口诀:

乘五除四九加日,

双月间隔三十天。

一二自加整少一,

三五七八十尾前。

二、举例说明:

例一:1996年1月16日

(96×5+96÷4+9+16)÷60=8余49,49即为六十甲子序数。9对应天干壬,49除12余1对应地支子,对应干支为“壬子”。

例二:1997年2月16日

(97×5+97÷4+9+16+30+2)÷60=9余26,26即为六十甲子序数。6对应天干己,26除12余2对应地支丑,对应干支为“己丑”。

例三:1998年3月16日

(98×5+98÷4+9+16)÷60=8余59,对应干支为“壬戌”。

例四:1999年4月16日

(99×5+99÷4+9+16+30+1)÷60=9余35,对应干支为“戊戌”。 例五:2000年7月16日

(100×5+100÷4+9+16+2)÷60=9余12,对应干支为“乙亥”。 例六:20001年10月16日

(101×5+101÷4+9+16+4+30)÷60=9余49,对应干支为“壬子”。

三、注解:

第三句中的“整少一”,为能被4整除之年一二月份比其他三年都要少加一;第四句反映的是大月规律,即8月加3、11月加5,依此类推)。

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


相关文章

  • 万年历计算 之 干支
  • 1.基本知识 中国古代的一种纪年法.即以甲.乙.丙.丁.戊.己.庚.辛.壬.癸为十干,子.丑.寅.卯.辰.巳.午.未.申.酉.戌.亥为十二支,把干.支顺序配合.如甲子.乙丑等,经过六十年又回到甲子.周而复始,循环不已.我国农历现仍沿用干支纪 ...查看


  • 推算日干支
  • 推算日干支,有按公历和农历两种方法推算. 一.农历日干支推算口诀: (方法一) 大小月卦记心间, 正一干支起根源. 大后干同地支冲, 小后干支退一天. 初一十三二十五, 支同隔干一位算. 意解: "大小月卦记心间,正一干支起根源. ...查看


  • 干支计时略
  • 干支计时法的换算 一. 年的换算 传统纪年法的推算 天干:甲乙丙丁 戊己庚辛 壬癸 地支:子丑寅卯 辰巳午未 申酉戌亥 推算年份的干支: 1. 公元后的年份减去三,个位数是天干,除以十二的余数是地支 2. 公元前的用60的倍数减去年份,然后 ...查看


  • 流星赶月口诀
  • 流星赶月? 一.?推算年干支口诀? 掌上推算年干支,支子花甲起根源.? 阳支都是旬开始,天干为甲尾四年.? 隔位逆推十年正,顺推年尾五零三.? 逐支加减六十数,掌上推算千万年.? 推算方法:"掌上推算年干支,支子花甲起根源.&qu ...查看


  • 二十八宿旁通历
  • 道教历法探奥 作者:盖建民 出版社:社会科学文献出版社 需要特别指出的是,道教为了修炼的需要,还创制了一种特殊的.在道门内部流通的历法.<道藏>中有一部原题为"中华仙人李淳风注"的数术著作<金锁流珠引& ...查看


  • 传统紫微斗数的闰月算法
  • 传统紫微斗数的闰月算法历来也是争议的一个热点. 遇到闰月怎么办?前人各有奇招,可归纳为六种: 1.依古法按下月算,这是斗数全书的观点,为绝大多数人沿袭: 2.按当月算: 3.前15日算上月,后15日算下月: 4.按下月起身命二宫,而月系星曜 ...查看


  • "生辰八字"的由来
  • 了解生辰八字,二十四节气是不可不知的要素. 天干地支的起源很早,有一块殷商时期的甲骨上就刻有完整的六十甲子表,甲骨文中干支纪日的例子俯拾皆是.将一个人出生的年月日时用天干地支表示,就是生辰八字.有很多人在谈婚论嫁时要看男女双方的八字是否相合 ...查看


  • 干支年份换算
  • 已知公历年份,求对应干支 公元后的年份数减3,除以10的余数是天干,除以12的余数是地支. 公元前的年份则先用大于所求年份的60的倍数减去所求年份(的绝对值),然后再减去2:除以10的余数是天干,除以12的余数是地支. 把天干数和地支数合并 ...查看


  • (10)月相纳甲纳音揭开武王伐殷的具体年月日时
  • 当今研究认为周初的历法是建立在观测月相的基础之上的.按月之盈亏,划一月为几段,又以每段首日干支配月相以纪日.月相之名,见于籍录者,有初吉(既吉.月吉),既生霸(旁生霸.既旁生霸.哉生霸),既望,既死霸(旁死霸)等等.而朔晦之名,未见于周初文 ...查看


热门内容