中國歷法是個非常復雜的問題,許多學者也沒能弄清楚。但有幾點知識是清楚的:辛亥革命之前,農歷大年初一叫做“元旦”,立春叫做“春節”;辛亥革命后,民國政府宣布廢除農歷改用新歷(即公歷),用民國紀年。從1912年開始,稱公歷1月1日為“元旦”。于是,農歷大年初一的名稱就被剝奪了。為了照顧民眾的年節需求,1914年1月,民國政府又頒布法令改稱農歷大年初一為“春節”,這樣,立春的名稱又被剝奪了。
一年的第一天從什么時候開始算起,歷史上曾有多次變化。如果以現在的農歷為標準,那么夏代歲首為正月初一;殷商歲首為十二月初一;周代歲首為十一月初一;秦代再提前至十月初一。直至西漢,漢武帝時,頒行《太初歷》,恢復夏代的以正月初一為歲首,這一歲首制歷代相沿未改。但是,這個歲首只是日常生活的歲首,不是干支紀年中的歲首。

黃歷與陰歷的錯位:在鄉土社會的民眾生活中,紀年并不重要。偏遠地區的老人,多數不能準確說明自己的具體年齡,但這并不妨礙他們的日常生活。但是,對于一個國家的時間系統來說,紀年卻是一個大問題。漢代以前,多沿用帝王名稱加上執政年份來紀年,有時也用太歲紀年,西漢末期才開始采用干支紀年。所謂干支紀年,即用天干與地支配合紀年,如此十個天干經過六個循環,十二個地支經過五個循環,重新又回到第一個天干和第一個地支,間隔正好六十年,計為一個周期。干支紀月是指在農歷中用干支記錄月序,一般只用地支紀月,把冬至所在之月稱為子月(一般在農歷十一月),下一個月稱為丑月,立春所在的月份就叫寅月。自太初改歷以來,均以“寅月”為年首,因此又稱“建寅之月”或“建寅正月”等。寅月一般都與農歷正月吻合,但也有不吻合的時候。
純粹的陰歷是一種非常直觀的歷法,一個有經驗的老農,抬頭看一眼月亮,就能說出今天是幾月初幾。他們既不需要知道干支年,也不需要知道干支月,他們只需要知道陰歷的日期和陽歷的節氣就能應付生活中的一切事務。
但是,國家時間必須有更精確的歷法系統來統籌。干支紀年、紀月、紀日,都是為了記錄和推算國家時間而設立的。干支年以干支月為基礎,而干支月則以24節氣為基礎。因此,以陽歷為基礎的干支年并不與以陰歷為基礎的農歷年相吻合。通俗地理解,陰歷是單一以月亮朔望為依據的,最古老最直觀的歷法,主要用來應付日常的時間安排;干支紀時系統則是嚴格等分的精確時間分割,主要服務于國家時間,諸如祭祀、天象、災異等,后來也為推算吉兇所使用。在干支紀時系統中,屬相不在正月初一,而在立春之日。干支年歷是以節氣為基礎的歷書,一般只能由中央政府頒布,故稱“皇歷”。我們翻開任何一本皇歷都能看到,干支年份的變更,也是屬相的變更。屬相變更不在正月初一,而在立春建寅之日,大約相當于公歷的2月3日至5日之間。

