春秋後期,產生了壹種取回歸年長度為365日,采用十九年七閏為閏周的歷法--四分歷。在歐洲,羅馬人從公元前43 年采用的儒略歷所確定的回歸年長度與此相同,但要比我國晚500 年。而十九年七閏的方法,古希臘的默頓也是在公元前433 年才發現的,也比我國晚100 年左右。這說明,我國的四分歷在當時的世界上是十分先進的,也標誌著我國的歷法制定已走上成熟。
作為陰陽歷基礎的天文常數,是回歸年和朔望月的長度,所以,制定歷法的第壹步,即歲實(回歸年)和策朔(朔望月)。
年是以地球繞太陽公轉運動周期為基礎的時間單位。由於古人認為地球是靜止的,所以就以太陽在天球上視運動的壹個周期為壹年。所謂回歸年,就是太陽在天球上連續兩次通過春分點或冬至點的時間間隔。我國古代天文家把冬至作為壹年的起算點,因此,只要準確地連續測定兩個冬至點的時間,就可以定出回歸年的長度。春秋時期把冬至叫作日南至,因為冬至那天日中太陽的高度最低,被認為是太陽處在最南端的位置,所以叫作日南至。據《左傳》記載,我國最早的冬至時刻的測定,是在春秋時代魯僖公五年(公元前655 年)正月辛亥和魯昭公二十年(公元前522 年)二月己醜兩次,這是用圭表測定的。
據被認為是在戰國後期或秦朝初年成書的《周髀算經》記載,我國從西周時代,就開始使用壹種最簡單的觀測工具--周髀。《周髀算經》卷上之二載:周髀長八尺,夏至之日晷壹尺六寸。髀者股也;正晷者勾也。《周髀算經》趙註:伸圓之周而為勾,展方之匝而為股。又據《晉書》:表,竿也。蓋天之術曰周髀。髀,股也。用勾股重差,推晷影極遊,以為遠近之數,皆得於表股者也。這說明,周髀即圭表,直立於平地上的標竿(或石柱)為股或表,正南北方向平放於地上的尺為勾或圭,二者互相垂直而組成圭表。從《考工記》可知,戰國以前人們已知道使用鉛垂線來校正表的垂直,用水平面來校正圭的水平。每天正午時刻,日影恰在正北的方向(太陽在正南中天);但每天正午時刻日影的長度並不壹樣,夏至時太陽在北回歸線,午時的日影最短(當時記為壹尺六寸),冬至時,太陽在南回歸線,午時的日影最長(當時記為壹丈三尺五寸)。這樣,根據正午時表影的長度,就可以推定節氣,從正午時表影長度的周期性變化,就可以確定出壹個回歸年的日數。具體地說,周髀就是以八尺長的標竿直立地上,用立竿見影之法,晝觀日中之影(晷),以定出節氣推移和壹年的日數。所以,我國在西周初期,已知道了回歸年的長度。但是,周初數百年還處於觀象授時的階段,離制定歷法還有相當長時間。不過,周髀的發明,雖然十分簡單,而在中國古代天文學的發展上,其作用和意義決不在後來的天文望遠鏡和射電望遠鏡之下。
由於每次太陽到達冬至的時刻並不壹定正好在中午,所以為了測得準確的回歸年長度,古人采用了連續測量若幹個冬至日正午的影長的方法,取其間隔日數的平均值,得出回歸年的日數(歲實)。春秋末年,我國把歲實定為365日,這個日數與現代值365.2422 日相比,只長了0.0078 日,即11分鐘,說明當時對太陽在天球上的視運動的觀測,已達到很精確的程度。月是以月球繞地球的公轉運動為基礎定出的時間單位。朔望月(策朔)
即月相變化的周期,是根據月亮相對於太陽的位置(即根據月亮的圓缺變化周期)來確定的。所謂朔,是月球和太陽在黃道上的經度相同,即處於同壹方向,二者同時出沒的日子,又稱合朔,這時的月亮叫作新月,實際上是看不見的月黑天。所謂望,是月球和太陽的黃經相差180°,二者遙遙相對的時候,這時的月亮叫作望月或滿月。月球連續兩次朔或連續兩次望之間的時間,就是壹個朔望月。月球運行壹周天大約需要29 日多。春秋時期朔望月的平均日數定為29.5306 日,用朔望月的平均日數推算的每月的朔日,叫作平朔。由於朔望月的長度不是整日數,而在實際應用中每個月都以整日數計,所以就安排大月為三十日,小月為二十九日,通常大月小月交替排列。即使如此,平均仍小於朔望月的長度,時間長了也會產生明顯誤差,所以每相隔大約17 個月或15 個月,還得安排連續兩個大月,稱為頻大月。
以太陽的周年視運動為依據制定的歷法叫作陽歷,或叫太陽歷,這種歷法與月亮的朔望變化無關;而以月亮的圓缺變化周期為依據制定的歷法叫作陰歷,或叫太陰歷,這種歷法與太陽的運動無關。二者同時並用的,為陰陽合歷,這種歷法以太陽的周年視運動為回歸年,以月亮的朔望變化周期(朔望月)為月。我國古代的歷法就是這種陰陽歷。
實行陰陽合歷,就會遇到壹個安置閏月的特殊問題。因為壹個回歸年是365 日多,壹個朔望月是29 天多,兩個周期都不是整數,這就出現了陽歷和陰歷無法協調整齊的困難。即使安排了大月30 日,小月29 日,12 個朔望月也只有354 或355 日,每年要差10 至11 天,三年就差壹個來月。因此就必須用置閏月的方法來加以調整。不過,如果每隔三年插入壹個閏月,每年平均日數就比陽歷年少幾日;如果每隔八年插入三個閏月,則每年的平均日數又比陽歷年多了幾日。古人從長年的經驗中逐漸發現,十九年七個閏月(***235 年月)與十九個陽歷年的日數(6939.69 日)幾乎相等。我國大約在公元前五、六百年,開始采用十九年七閏月的方法。因為根據前述《左傳》所載的兩次日南至(冬至)的測定,表明當時已知這兩次冬至之間相隔133年,魯僖公五年那次冬至在正月,昭公二十年的那次冬至在二月,顯然前壹年少置了壹個閏月;這其間應有49 個閏月,可以推得,正好是19 年有7 個閏月。所以可以斷言,公元前500 年左右,魯國天文家已發現了19 年7 閏之法。古希臘到公元前433 年才采用這種置閏法,比我國晚了100 來年。
這種安排連大月和19 年7 閏的方法,在陰陽合歷中是壹種極巧妙的設計。在春秋中葉,即魯文公、宣公時代,我國已開始有規則地使用連大月和置閏月,表明春秋時期我國在歷法制定上已處於逐步走上確定的準備階段。不過,若以壹年為365.25 日,用19 年7 閏的方法在日數上仍然帶有壹個小數(6939.69 日)。它的4 倍(76 年)極接近於27759 日,所以又采用了76年的周期,使大小月的安排以及閏月的插入都以76 年為周期。這個方法,在公元前360 年的戰國中期的顓頊歷中已經實行了。希臘的卡利巴斯在公元前334 年發現了76 年插入28 個閏月的方法,比我國晚了20 多年。
春秋時期雖然還沒有創立起有規則的制歷法,但已實行1 年12 個月的歷日制度,每隔2 年或3 年插入壹個閏月來調節寒暖季節。在壹個朔望月內,以日月合朔的那天為初壹或朔日,最後壹天叫晦日。春秋初期,閏月壹般都安排在冬12 月後,為第13 個月。到春秋後期,閏月則隨意安插,不壹定在12 月之後。
我國歷法確定制定的時期,當在戰國中期。由於它以365日為壹個回歸年,故稱為四分歷。《漢書·藝文誌》記載的古六歷,即黃帝歷、顓頊歷、夏歷、殷歷、周歷、魯歷,都屬於四分歷。由於戰國時期有關天文歷法的著作在秦始皇焚書後都已失傳,我們只能從《漢書》和其他古籍中了解其大概。可以確言,這個時期的四分歷,歲實為365日,用19 年7 閏的閏周,以冬至之日為壹年之始,以平朔為壹月之始,以夜半為壹日之始,以此前某壹個平朔、冬至恰在同壹個夜半的日子為歷元,從歷元這壹天開始推算此後各月的朔望和各年的節氣日期。當時由於對日月合朔和冬夏二至日期的測定不很精確,所以各諸侯國的歷法家采用的歷元日期就不相同,這便形成了古六歷的不同。
戰國以後,各諸侯國雖然都實行相同的歷法,但由於采用的歲首不同,於是就出現了所謂三正。歲首即壹年開始的月份,大約黃河下遊的周室及其同姓諸侯國,采用東周王室頒行的歷書,規定新年從子月開始,即包含冬至的那個月(相當於現今的農歷11 月)為歲首,稱為周正;南方及東方殷民族所建諸侯國,如鄭、宋、齊等國,以季冬之月,即醜月(冬至後壹月,相當於現今的農歷12 月)為歲首,稱為殷正;黃河中遊地區的晉國、秦國等古代夏民族後裔居住的區域,以孟春之月即寅月(冬至後二月,相當於現今的農歷正月)為歲首,稱為夏正。因此,我們現行的農歷,被稱為夏歷。