曆法簡介
1.本程式計算傳統農曆中的各種日期資料,包括年、月、日及節氣等,與及公曆和農曆間的對應。
2.由於時差關係,農曆曆法中所用到的合朔(即新月)時間,在不同的時區有時會落在不同日子,因此對應每個月初一所在的日子便會有差別。另外廿四節氣所在的日子在不同的時區也可能不同,引致閏月的安排改變,所謂牽一髮而動全身,整個農曆的編排都會受到影響。
3.大部份使用農曆的人均居住在大中華地區,都使用同一套農曆。但隨著越來越多華人移居世界各地,在其他地方生活的人,若同樣使用基於大中華地區編排的農曆,雖然有利於互相溝通,但卻失去了農曆曆法更能反映大自然規律這個充滿智慧的設計的優點,豈不是和買櫝還珠一樣!所以本程式特意同時用兩個不同時區來編制農曆,既能符合不同地區的需要,亦能方便互相參照。
4.本程式的計算,大中華區以東經120度地區為準。這亦是香港、澳門、台灣及中國大陸等地所採用的東八時區標準。英國區則以格林威治(零)時區為準。
5.傳統曆法主要分三種。凡曆法元素只依據觀測太陽運動來定的,稱為陽曆。若曆法元素只依據觀測月亮運動來定的就是陰曆。如果一個曆法中部分元素依據觀測太陽運動來定而另一部分元素依據觀測月亮運動來定則是陰陽合曆。
6.以下簡介現代所用的公曆及農曆法則。
公曆(格里曆)
1.公曆曆法,主要由日、月、年等元素組成。
2.日的定義,是由一個子夜(即凌晨零時)到下一個子夜。日夜的變化來自地球自轉,和太陽月亮的運動沒有直接關係。
3.月的定義如下:一年分十二個月,其中一、三、五、七、八、十及十二月有31日,四、六、九、十一月有30日,二月則平年28日、閏年29日。這是純人為規定,和觀測太陽月亮運動也沒有直接關係。
4.年的定義,規定以回歸年,即地球圍繞太陽公轉一圈的時間作為一年的長度。現代測量的數字是約365.2422日。由於回歸年的長度不是日的整數倍,日曆上的一年總是和回歸年有差異,經過一段時間,差異會變得很大,為了補償這個差異,便設計了閏年。凡「年份數目是4的倍數、但不是100的倍數、又或是400的倍數」的就是閏年。所以1900及2100不是閏年,但2000是閏年。平年有365日,閏年只是增加了2月29日,即有366日。
5.公曆法則簡單易用,誤差少。大約三千多年才有一日的誤差,完全足夠一般使用。
6.由於公曆元素的定義中,只有年的長度和觀測太陽運動有關,所以是陽曆的一種。
7.格里曆是十六世紀才開始使用,之前的儒略曆,由公元前開始使用,也逐漸出現了誤差。不過有些國家其實是到了二十世紀才採用格里曆的。
農曆
1.農曆曆法,主要由日、月、年、節氣、歲等元素組成。
2.日的定義,和公曆中的定義基本上是相同的。
3.月的定義,依據月亮盈虧,以合朔(即太陽及月亮處於同一黃經位置)當日作為一個月的開始,稱為初一,而以下一次合朔的前一日作為一個月的結束,叫做朔望月。朔望月的長度平均是29.53日,所以每個農曆月的長度為29或30日不等。在唐朝以前,由於採用平朔(即將每個月的長度平均化)定初一,所以大、小月會平均分佈,只是間中會出現連續兩個大月。在唐朝以後,改用了定朔(即用真正合朔日子)定初一,由於月球的不規則運動,大、小月的分佈也變得不平均,最多可以連續四個大月或三個小月,不過並沒有簡單方法可以即時判斷那個月大那個月小。
4.年的定義,由正月(一月)第一日起,至臘月(十二月)最後一日止。以十二個朔望月計算,共354或355日,和回歸年的長度相差約11日。為了補償這個差異,於是便有閏月的設計。在有閏月的年份,全年十三個月,共有383-385日。大約每十九年便會有七年有閏月,這可以使農曆年的平均長度和回歸年較接近。
5.節氣的定義,是當太陽處於黃經0度、15度、30度、45度... 等位置的時刻,共有二十四個(立春、雨水、驚蟄、春分、清明、穀雨、立夏、小滿、芒種、夏至、小暑、大暑、立秋、處暑、白露、秋分、寒露、霜降、立冬、小雪、大雪、冬至、小寒、大寒)。亦可分為十二個節氣(立春、驚蟄、清明、...)和十二個中氣(雨水、春分、穀雨、...)梅花間竹的出現。古時由於採用平氣方法定節氣(即平均分佈二十四個節氣的時刻),所以每兩個節氣間都是約15.22日,但自從清初採用定氣方法定節氣(即以太陽實際黃經位置來定)以來,由於太陽的視速度(亦即地球公轉速度)並不固定,所以節氣間有時疏有時密,相隔時間由14日至16日不等。
6.歲的定義,是由冬至當日到下一個冬至前的一日,長度大約等於一個回歸年,即365-366日。稱為歲實。
7.節氣是決定如何設置閏月的重要因素。在採用平氣的時代,兩個節氣間相隔約15.22日而一個陰曆月長29-30日,所以大多數月份都有一個節氣和一個中氣,偶然有些月份只有一個節氣而沒有中氣,這個月便定為閏月。而且因為節氣平均分佈,所以任何一個月成為閏月的機會也差不多。但是自從改用定氣後,節氣間有時相隔14日,所以有機會出現一個月內共有三個節氣(和中氣);但有時又相隔16日,所以出現一個月只有一個節氣的機會也大了。因此置閏法則也要相應改變。
8.現代的置閏法則:首先依照合朔日子分開每個月,將冬至所在的月份定為冬月,即十一月。若連續兩個冬月中間(即一歲)有十一個(農曆)月,則不用設置閏月(無須理會節氣),月份由臘月、正月、二月等順序安排;若連續兩個冬月之間有十二個月,則將其中一個定為閏月,並將該年(應是歲)內第一個只有節氣而沒有中氣的月定為閏月,其後即使再有無中氣月,也不算閏月。
9.由於北半球夏季時地球離開太陽較遠,公轉速度較低,節氣較疏,出現無中氣月份機會較高,所以較多機會出現閏月;相反,冬季則較少出現閏月,閏臘月或閏正月是很罕有的。
10.在農曆中,月的定義依據觀測月亮的運動而定,節氣的定義則依據觀測太陽的運動而定,所以農曆屬於陰陽合曆這個類別。
11.中國傳統上出現過很多曆法,直到清初改用定朔定氣方法,才大致確定。不過直到1929年時中國才將計算的地點由東經116度(北京所在地)改至東經120度,這做成了合朔、節氣時間大約14分鐘的差別,當然因此亦影響了整個日曆。香港則在1978年才採用這個計法。
12.由於在歷史上曆法改變過很多次,所以用現代的曆法倒推回(數百年)以前的日曆,雖然技術上可以做到,但其實和以前真正使用的日曆,是有分別的,在作歷史研究時,需要小心驗證。
干支及生肖
1.在農曆中,除了用順序數目表示年、月、日、時外,一向也有用干支來表示,另外更有用生肖來紀年的做法。
2.干支是十個天干(甲、乙、丙、丁、戊、己、庚、辛、壬、癸)和十二個地支(子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥)的組合,循環使用,一共有六十個,稱為六十甲子(甲子、乙丑、丙寅、丁卯、...)。注意其中有些(準確說是一半)天干地支組合是沒有用的,例如甲丑、乙子、丙卯、丁寅等等。
3.年、月、日、時的干支都只是按六十甲子的順序編排,例如今年是甲子年,明年就是乙丑年;今日是丙寅日,明日就是丁卯日;今個時辰是戊辰時,下個時辰就是己巳時。每六十年(或月或日或時辰)一個循環。
4.天干地支的組合始於上古時期,據說黃帝時已開始使用,考古發現商朝的一塊甲骨上已刻有六十甲子,但干支紀年最遲在漢朝已使用,干支紀日則更早,最遲在春秋時期已有。
5.月份的干支也是按六十甲子順序編排,但還有一個規定,冬月是子月,臘月是丑月,正月是寅月,餘此類推。這也是農曆又稱夏曆的原因,所謂「夏曆建寅」,即是夏朝的曆法以寅月作為一年的開始,是為正月。商朝則以丑月為正月(建丑),周朝卻以子月為正月(建子),漢朝以後才改回以寅月為正月至今。現代曆法中,閏月的干支則和之前的非閏月相同。每年都有十二個非閏月,剛好和十二地支配合。
6.時辰的干支也是按六十甲子順序編排,而逢甲日的子時便是甲子時。兩個甲日間相差十日,即一百二十個時辰,剛好是兩個六十甲子的循環。
7.每一年的生肖,和該年的地支掛鈎。子年肖鼠,丑年肖牛,寅年肖虎等等。地支有十二個,生肖也有十二個。
子平曆法
1.有一點要留意,在術數應用裏,計算出生時辰八字所用的干支及生肖,和上面介紹的傳統農曆曆法是不同的。根據子平八字的做法,決定出生時的年、月干支,並不依據當時的農曆年、月,而是以立春作為一年的開始,決定年干支;又以十二節氣(非中氣)作為月的開始,決定月干支,即是立春當日是正月開始、驚蟄當日是二月開始、清明當日是三月開始,如此類推。每年的生肖自然也是在立春日輪換的。
2.一年的長度,即由一個立春到下一個立春,大約是365日,和回歸年吻合;每個月都由節氣開始,中間都有一個中氣,所以一年只有十二個月,沒有閏月。這種曆法中,年、月都和節氣相關連,反而和觀測月亮運動(即是盈虧)無關,嚴格來說是一種陽曆,和屬於陰陽曆的農曆,其實是兩種並不相同的曆法。
3.在這種曆法中,年、月、日、時均用干支表達,所以亦有人稱為干支曆。注意在這種曆法中是不應使用例如七月初七日這種表達形式的。
4.在計算出生時辰八字時還有一個「子初分日」的問題要考慮。每一個時辰長度為二小時,子時由深夜23時至凌晨1時,其中第一小時稱為子初,第二小時稱為子正(但已是下一天了)。換句話說,同一天的子時被分割為兩部分。有部分人作術數計算時採用子初分日原則,即深夜23時起作下一日論。本程式則仍使用傳統農曆曆法中的子正分日原則,若需採用子初分日,請自行調整。
農曆節日
1.部份節日,有固定的農曆日期,如:新年(正月初一日),上元/元宵(正月十五日),端午(五月初五日),乞巧/七夕(七月初七日),中元(七月十五日),中秋(八月十五日),重陽(九月初九日),下元(十月十五日),臘八(臘月初八日),除夕(臘月最後一日)。
2.有些節日,確實日期存在分歧,如:上巳,原來是三月首個巳日,但後來簡化為三月初三日;祭灶,較多人用臘月廿四日,但亦有「官三民四」的說法; 寒食,在古時的定義是冬至後105日,通常會出現在清明前一或二天,但在清初改曆後,變了在清明當天或後一天,故此現代通常已將定義改為清明前一天。
3.春社及秋社是中國古代春秋二季的重要節日,但近代已逐漸式微了。在不同朝代及不同地方會選不同日子,但較常用的是立春或立秋後的第五個戊日。
4.三伏天一般認為是一年中最熱的日子,故有「熱在三伏」的說法。其中分為初伏、中伏和末伏。初伏指夏至後的第三個庚日至第四個庚日前一日,共有10日(若夏至當日為庚日則視為初庚,立秋同);中伏指夏至後第四個庚日至立秋後第一個庚日前一日,有10或20日;末伏指立秋後第一個庚日至第二個庚日前一日,共有10日。
5.數九是從冬至開始每過九天記為一九,共記九九,通常數九的前三九即冬至之後的頭一個月是一年中最冷的日子,所以有「冷在三九」的說法。
雙春及盲年
1.雙春年是指在一個農曆年之內出現兩個立春節氣。盲年是指在一個農曆年中沒有出現立春。
2.連續兩個立春之間相隔365-366日。
3.沒有閏月的農曆年有354-355日,其中可能沒有立春(即盲年)或只有一個立春。
4.有閏月的農曆年有383-385日,其中可能有一個立春或兩個立春(即雙春年)。
5.由此可見,雙春年必定有閏月,另外還可以證明有閏月的年一定有雙春。所以雙春兼閏月出現的機會其實不少,大約每十九年便有七次。
朔望盈虧
1.朔,又叫新月,亦即太陽及月亮處於同一黃經位置的時間,依照現代農曆法則,這天必定是初一。
2.望,又叫滿月,亦即太陽及月亮的黃經位置相差180度的時間,由於月球的不規則運動,卻可能出現在農曆十四至十七的任何一天。
3.由於一個公曆月多數有30-31天,而一個農曆月只有29-30天,便有機會出現(公曆)月初出現一次滿月,月尾又出現一次滿月,即一個(公曆)月內有兩次滿月,那麼第二次滿月便稱為藍月,並不是說那天的月亮變了藍色。
4.朔、望發生的日子,在不同地方可能會有分別,所以出現藍月的日子,也會隨不同地點而可能不同。
5.西諺中,藍月代表罕有之意。一般來說,藍月每兩、三年便會出現一次,偶然甚至可以一年出現兩次,其實也不算很罕見。