日干支的求算 仿照星期的求算,,得到一個(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,可以直接得到日天干和日地支,。不過(guò),,和形式相似的求星期的公式一樣,這個(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,,所以,每過(guò)一個(gè)平世紀(jì),,同一天的干支就向后推進(jìn)44個(gè)序號(hào),。同樣,每過(guò)一個(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)楣糯鷽](méi)有準(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)廊》