并非所有月份的天数都相同,主要是基于历史传统和天文观测结果的结合。起初,罗马共和国时期的历法(儒略历)就是根据月相制定的,一年分为12个月,试图模仿月亮围绕地球公转的周期。然而,地球绕太阳公转一圈的实际时间(即一个回归年)约为365.2422天,并不正好是12个朔望月(平均每个约29.5306天)的总和。
为了尽量让日历年与太阳年同步,同时保持与月相一定的关联,历法设计者制定了不同长度的月份。最初的罗马历法中,大部分月份有29或30天,但后来为了使历法更加规则化和适应太阳年的实际长度,公元前45年,凯撒大帝采纳了埃及天文学家索西琴尼斯的建议,改革历法形成了儒略历。
在儒略历中,一年设定了12个月,其中大月(31天)有7个,分别是1月、3月、5月、7月、8月、10月和12月;小月(30天)有4个,分别是4月、6月、9月和11月;二月原本也是30天,但在凯撒大帝改革后,为了接近太阳年的长度,二月被减去一天变为29天。每四年再额外加一天,即闰年的二月有29天,以补偿每年多出的约四分之一天。
不过,儒略历依然存在误差,大约每128年就会累积一天的误差。到了公元1582年,教皇格列高利十三世进一步改革历法,推出了更为精确的格列高利历(即现代公历),规定除了不能被400整除的世纪年外,能被4整除的年份为闰年,这样更准确地接近了太阳年的长度。同时,为了消除已经积累的十几天误差,1582年10月4日之后直接跳到10月15日。在格列高利历中,二月平年为28天,闰年为29天,其余月份天数不变,这就是我们现在使用的公历体系。