历法中年和月的长度是日长的整数倍,它们不再是时间的自然单位,分别称为历年和历月。阳历又称太阳历,是根据地球绕太阳公转周期所定出来的历法。阳历的每一历年都接近于回归年。在一长时间内,历年的平均长度应尽可能与回归年相等。在这一前提下,每年划分为12个历月,它们没有天文学上的意义。因此,在阳历中,便采用与回归年最相近的整日数来计算年的长度,一年365日。
很明显,如果阳历的历年长度每年都为365日,那么由于每一历年比回归年长度短0.2422日,长此以往,差数不断积累,季节就会不断向后推迟。比如,经过720年后,积累差数达到半年左右,那时春分出现在十月,而七月则成为一年中最冷的月份。这样,必然会造成寒暑颠倒,岁时混乱。为了克服这一点,阳历规定设置闰年,闰年为366日,而把含有365日的年份称为平年。置闰的规则可用三句话来表示:非世纪年的公元年数能被4整除的为闰年,世纪年(如1900年,2000年)的公元年数能被400整除的为闰年,其余的年份为平年。于是在400年内计有闰年97年,平年303年,平均长度为365.2425日,和回归年的长度只相差26秒,经过三千多年后才相差1日,这是很精确的了。现行的阳历为罗马教皇格里高里八世在公元1582年所颁布的,并且从第二年起陆续为世界各国所采用,因而又有格里高里历或格里历之称。
阴历又称太阴历,是依据月亮运行的周期所定出的一种历法。制订阴历的原则是使每一历月都接近于朔望月,历月平均长度应等于朔望月。然后,使历年的长度尽可能接近回归年。由于朔望月的长度为29.5306日,阴历的历月是大月30日,小月29日,交替相间,以使历月平均长度接近于朔望月。当然,这样做还是存在着不小的差异,因此在目前伊斯兰教徒所采用的回历中,规定在360个历月(即30个历年)中大月占191个,小月为169个,从而在历月和朔望月的配合上作了很大的改进。
纯粹阴历的历年也有平年和闰年之分。平年354日,包括六个大月和六个小月。闰年355日,在十二月末增加一天,包含七个大月和五个小月。这种历法并不照顾到历年平均长度和回归年长度的配合,久而久之,两者相差甚大。比如说,对于用阴历记年的一个68岁回族老人来说,实际上他只过了66个春秋。
由于阴历的根本特点在于历月平均长度等于朔望月,每个日期就必然与一定的月相相对应,比如阴历十五大致就是满月。阳历的月是不能反映这一自然现象的。但阴历的历年则不能反映出季节的变化,和农业生产及人们的日常生活脱节,因而已很少为人所用。