日干支的求算 仿照星期的求算,得到一個(gè)比較直觀的計(jì)算日干支的公式如下: G = (Y-1)*5 + [(Y-1)/4] - [(Y-1)/100] + [(Y-1)/400] + D + 15, (3) 其中Y是年份,D是累積天數(shù),[...]表示取商數(shù),也就是只取計(jì)算結(jié)果的整數(shù)部分。把G除以60,余數(shù)就是干支的序號(hào)?;蛘甙袵除以10或12,可以直接得到日天干和日地支。不過,和形式相似的求星期的公式一樣,這個(gè)公式還不夠簡(jiǎn)煉,特別是第一項(xiàng)(Y-1)*5,在Y為四位數(shù)年份時(shí),計(jì)算出來(lái)的結(jié)果是一個(gè)較大的四位數(shù)或五位數(shù),口算很不方便。用推導(dǎo)蔡勒公式的辦法,可以改進(jìn)這個(gè)公式。先來(lái)看和年份有關(guān)的部分的改進(jìn)。 按公歷的置閏規(guī)則,一個(gè)世紀(jì)的總天數(shù)可能是36524天,或36525天。如果這個(gè)世紀(jì)中末尾為00的年份是閏年,這個(gè)世紀(jì)就只有36525天;否則就只有36524天。不妨稱有36524天的世紀(jì)為“平世紀(jì)”,有36525天的世紀(jì)為“閏世紀(jì)”。對(duì)于平世紀(jì),因?yàn)?6524 mod 60 = 44,所以,每過一個(gè)平世紀(jì),同一天的干支就向后推進(jìn)44個(gè)序號(hào)。同樣,每過一個(gè)閏世紀(jì),同一天的干支就向后推進(jìn)45個(gè)序號(hào)。這就得到一個(gè)計(jì)算每個(gè)世紀(jì)第一年(年份末尾為01)3月1日的公式: G = 44C + [C/4] + 15, (4) 其中C是世紀(jì)數(shù)減一。 而計(jì)算任一年3月1日的干支的公式也可以很快得到: G = 44C + [C/4] + 5(y-1) + [y/4] + 15,即 G = 44C + [C/4] + 5y + [y/4] + 10, (5) 其中y是年份后兩位數(shù)字。 下面再列出每月天數(shù):
減30后的剩余天數(shù) 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) (奇數(shù)月i=0,偶數(shù)月i=6), (7) 其中,D’是從3月1日開始算起的累積天數(shù),M是月份,d是日數(shù)。把(6)(7)兩式和(5)式合起來(lái),再進(jìn)行適當(dāng)?shù)幕?jiǎn),就得到了計(jì)算公歷任意一天的天干和地支的公式: 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 (奇數(shù)月i=0,偶數(shù)月i=6),(9) 如果先求得了g,那么 z = g + 4C + 10 + i (奇數(shù)月i=0,偶數(shù)月i=6). (10) g的個(gè)位數(shù)就是天干序號(hào),z除以12的余數(shù)就是地支序號(hào)。這里需要再次強(qiáng)調(diào):1月和2月是當(dāng)做上一年的13月和14月來(lái)算的,因此C和y也要按上一年的年份來(lái)取值。 把(8)(9)兩式和蔡勒公式對(duì)比一下: W = -2C + [C/4] + y + [y/4] + [13*(M+1) / 5] + d - 1, 可以看出它們的形式非常相似,區(qū)別僅僅是幾個(gè)常數(shù)的不同。 盡管現(xiàn)在中國(guó)已經(jīng)不用干支紀(jì)日了,但有時(shí)還是需要計(jì)算日干支的。比如,歷法有所謂“三伏”和“入梅”“出梅”,都和日干支有關(guān)。三伏包括初伏、中伏和末伏,是指夏天最熱的一段時(shí)間,入梅和出梅是指江南一帶梅雨季節(jié)的開始和結(jié)束,本來(lái)是和氣候有關(guān)的用語(yǔ)。但因?yàn)楣糯鷽]有準(zhǔn)確的天氣預(yù)報(bào),無(wú)法準(zhǔn)確預(yù)測(cè)三伏和入出梅的時(shí)間,所以就在歷書上硬性規(guī)定幾個(gè)日子作為三伏開始和入出梅的日子,這樣確定一個(gè)大致的日期以備參考?,F(xiàn)在雖然有了比較準(zhǔn)確的天氣預(yù)報(bào),但三伏和入出梅作為一種傳統(tǒng)歷法,仍然流傳下來(lái)。 歷法規(guī)定夏至之后的第三個(gè)庚日為初伏開始,共十天;第四個(gè)庚日為中伏開始,十天或二十天;立秋之后的第一個(gè)庚日為末伏開始,共十天。中伏的長(zhǎng)度之所以不固定,是因?yàn)橄闹?、立秋的日期和庚日的日期是逐年浮?dòng)的,立秋之后的第一個(gè)庚日可能是夏至之后的第五個(gè)庚日,也可能是第六個(gè)庚日。如果是前者,中伏就只有十天;如果是后者,中伏就長(zhǎng)達(dá)二十天。注意如果夏至當(dāng)天是庚日,夏至之后第一個(gè)庚日是指夏至之后第十天,而不是夏至當(dāng)天,這時(shí)初伏第一天就是夏至之后第三十天。同樣,如果立秋當(dāng)天是庚日,末伏第一天就是立秋之后第十天,而不是立秋當(dāng)天。入梅則是指芒種之后的第一個(gè)丙日,出梅是指小暑之后的第一個(gè)未日,也有同樣的規(guī)定。 知道了這些,我們可以算一下2004年的初伏、中伏和末伏都是什么日子。這需要先知道夏至和立秋的日子。如果知道夏至是6月21日,立秋是8月7日,那么運(yùn)用公式(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, 個(gè)位數(shù)是8,天干是辛。夏至之后第三個(gè)庚日就是夏至之后第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, 是個(gè)戊日。立秋之后第一個(gè)庚日就是立秋之后第2天,也即8月9日,這天就是末伏第一天。由此也可知,2004年的中伏只有十天。同樣可以由芒種和小暑兩節(jié)氣的日期,算出2004年的入梅日和出梅日分別是6月6日和7月15日。[1]
|
|
來(lái)自: 情系書畫 > 《文化長(zhǎng)廊》