农历的历年长度是以回归年为准的,但一个回归年比12个朔望月的日数多,而比13个朔望月短,古代天文学家在编制农历时,为使一个月中任何一天都含有月相的意义,即初一是无月的夜晚,十五左右都是圆月,就以朔望月为主,同时兼顾季节时令,采用十九年七闰的方法:在农历十九年中,有十二个平年,每一平年十二个月;有七个闰年,每一闰年十三个月。为什么采取“十九年七闰”的方法呢? 一个朔望月平均是29.5306日,一个回归年有12.368个朔望月,0.368小数部分的渐进分数是1/2 、1/3 、3/8 、4/11 、7/19 、46/125, 即每二年加一个闰月,或每三年加一个闰月,或每八年加三个闰月……经过推算,十九年加七个闰月比较合适。因为十九个回归年=6939.6018日,而十九个农历年(加七个闰月后)共有235个朔望月,等于6939.6910日,这样二者就差不多了。另外,“十九年七闰”只是一个近似说法。事实上,春秋时代天文学家曾经首创十九年七闰的方法;祖冲之大明历采用20组19年7闰插入1组11年4闰,计391年144闰,使农历的平均历年更接近回归年;此外还有334年123闰、1021年376闰的提法,和回归年的差额更小。但自清代以来,我国即完全采用天象确定历年、历月,从而使农历的平均历年与回归年完全一致。