中国古代历法是如何推算的？
中国传统历法是阴阳历，兼顾月相变化和太阳周年视运动的周期。分以下几点：朔望月、回归年、闰月、节气和正月的设置 规定朔日（月亮完全看不见那天，为什么？它和太阳几乎在同一方向）为每月的第一天。 先讲最原始的天文观测手段，高表测影法，现在地面上垂直竖起一根很高的杆子，然后在沿南北方向水平放置另一根杆子，立着的叫做表（其实华表最早的用途就是这个），躺着的叫做圭。人们很早就发现一年中不同时候太阳的正午高度是不同的，那时表投在圭上的影子长短也会随之发生变化，一年当中影子最长的一天即为冬至（这个说法不是很准确，先这么理解吧，稍后解释为什么不准确，另外为什么是冬至而不选夏至，因为夏至影子最短，假定尺子的测量精度一定，夏至前后影长变化太小，就很难测准，而且，对于中国来说夏天雨多啊，没太阳怎么办）。这样就会产生一个问题，通过高表测影法测得的太阳回归周期约365天，而月相的变化周期并不能与之形成简单的倍数关系，于是古人设置了闰月来调整。 下面讲讲关于调整的原则 1.冬至这个古代最容易观测的节气一定要在11月，其实应该这么说，冬至一定在建子之月（子丑寅卯的子啦），为什么11月是建子之月，实际上古人使用地支来表示方位，冬至时节北斗的斗柄在半夜时指向北方，也就是子的方向，也即斗建为子，这个月就是建子之月，由于正月选在了建寅之月，子月刚好排到11了。2.一年二十四节气当中，从冬至开始每隔一个节气就被叫做中气，有中气的月按地支排一遍，一般来说，朔望月的长度略短于两个中气相隔的时间，不是每个朔望月都可以有中气，那么总会有那么一些月份会没有中气，对于这些月份就规定为前一个月的闰月，如果相邻两个子月之间恰好间隔11个朔望月，则不管这些月中有没有中气都不置闰。由于每个冬至都在11月，那么月份的回归周期就可以很好地与太阳的回归周期稳定的联系起来。 还有一个问题就是太阳的回归周期也不是严格的地球昼夜周期的倍数，一回归年约365.2422天。而高表测影法只有正午的数据是有效的，太阳到达冬至点（赤纬最南时）也不一定恰好在中午，这种误差是不可避免而又难以测量的，在结合长年的观测数据发现，这个数据介于365到366天之间，经过对多年数据的平均，得出回归年的长度，秦汉时期就已经测出一回归年约365又1/4天，于是有了《四分历》（为什么这个名字？我猜是因为多出来1/4天吧），西方的儒略历也是这个周期。后来发现多出来的这1/4天也不准确，经过精密观测和不断修正，到了元代郭守敬制定《授时历》的时候已经把周期精确到365.2425天，和现行公历（格里高利历）相同，公历出现还更晚一点，这个精度足以保证几千年内不会出现太多偏差。（插一句，郭守敬已经使用的表已经不再是最初的一根杆子那么简单了，他在登封搭了一个观星台，并且在表顶端通过狭缝装置更加精确地测量影长，测量器械之精妙，让我无比汗颜，在机加工条件那么简陋的条件下，我根本想不出那么精巧的装置，考虑之全面，无与伦比，还能通过此装置高度精确地测量月球和星星经过上中天高度角，一个现代天文爱好者的优越感荡然无存。）/*到了晚明时期，邢云路沿着这套方法，用了三百多年的数据（当然啦，郭守敬的数据肯定也在其中），把精度已经提高到了365.2422天和现代测量值已经十分接近。*/（此段真实性存疑，邢云路有数据造假的可能，另由 @何谦羽 评论，冬至点回归年应为365.2427天，邢云路数据实际偏差更大）现在再填一个坑，之前说了，影子最长那天是冬至，实际上应该是太阳过冬至点那天是冬至，之前说了过冬至点的时候可不一定是中午，万一是半夜呢，这就涉及到精确测量冬至点的问题。古人也有办法，假定太阳在天上的运动是均匀的（很不幸，这个假定不成立，地球的轨道是个离心率很小的椭圆，只能近似看成圆，在靠近近地点的时候地球的公转会加快一点，太阳在天空背景上一天会移动更大的距离），那么冬至前后长达几个月的影长数据都收集一下，它们的长度应该关于某个时间点对称，这个点就是冬至点（由于之前说的假定不成立，所以实际上是不对称的，但古代采样数据少，精度低，没有发现，不过也已经很接近了，对于古代对历法的精度要求来说已经满足了，是我太吹毛求疵了）。虽然通常来说，这些影长并不关于冬至点对称，但有个特殊情况下还是可以对称的，那就是假如太阳过冬至点的时候，恰好地球在近日点呢？这两个时间越接近，那么影长就越对称，历史上还真有这么一阵（为什么这么说，稍后解释，好像坑挖的有点多），大约是南宋的时候，这种误差就可以很小，郭守敬比较走运，他所处的时代离这个时期更近，误差较小，邢云路就没那么走运了，误差稍大。坑挖大了。。。补充点知识，表述一下他们计算冬至点的精度。。。中国古时候一天时间划分不是说只划分到时辰或者刻，一个时辰也不是就等于8刻，，古人把一天平均划分为100刻，而一天还平均划分为12时辰，所以严格的说，一刻等于现代14.4分钟而不是15分钟，古时一刻为100分，1分为100秒（仅部分时代才用此进制，历史上用过一天96刻、100刻、108刻、110刻、120刻等多种进制），和现代很不同，虽然他们无法测量也用不到这么细节的时间划分，但不妨碍他们创造这些单位，并在计算时间中使用，像郭守敬邢云路这样的人都把冬至点算到了秒（当然是古代单位），现代时间单位的引进并使用从晚明（没错，和邢云路一个时候，东西文化冲突啊）一直到清代才完成了代替。题外话：从日落到日出，在古代无法使用日晷的环境下被平均划分为5份，从一更（我习惯读jing，不知道现在的普通话怎么规定，我学的时候，貌似这么读）到五更。由于一年之中昼夜长短变化，每一更的起止时间都会发生变化，唯一可以肯定的是，半夜12点，一定在三更的正中间。 接着填坑，不是每个冬至时刻，地球都在近日点附近，这是由于岁差的作用，每年太阳经过冬至点的时候，地球的位置会比前一年更向后移动一点点，就是回归年周期不等于公转周期。关于岁差就不多说了，摊子铺得有点大（涉及陀螺运动，古人也很早就发现了，不过地球的轨道是个椭圆，以及其产生的影响要到开普勒发现行星运动三大定律才被人知道，其实是前两大定律发现时，这一年是1609年，比邢云路测定回归年周期略晚几年，邢云路他们不知道也是没办法的事）。 好了，刚刚说到了古人测定回归年周期，下面再说说关于月亮和节气的事，毕竟月相和节气是阴阳历稳定存在的必要条件。 关于朔望月周期测定就不多说了，毕竟从残月到新月的变化是很清楚的，古人总结了一大堆变化规律，虽然不完善，但预报前后几十年到上百年还是可以的。至于为什么古代颁布了那么多历法，一是因为颁布历法是王朝强调正统性的重要手段，二是重大天象，如日月食的预报精度古人还是很看重的。由于三体运动难以计算（自行百度），计算月亮的位置远不是测量朔望月周期那么简单，另外，由于月亮离地球太近了，不同地理位置同时观察月亮在天空背景上的位置是不同的（三角视差，可以多达两个满月那么大，要知道太阳和月亮的视圆面是差不多大的，两个满月的差别还是很明显的，比如，这里能看到日全食，那里就是日偏食，再远的地方就根本看不到了），这一切都为长时间预报造成了困难，而历法提供的计算方法，只能保证一定时间范围内的精度。诸如地球是圆的，地理经纬坐标，球面几何等都是晚明才随着西洋传教士传播到中国。这也是为什么邢云路领导的中国古典天文学改历失败，他的历法对于日月食的预报精度，远远比不上十几年后徐光启主导的采用西方第谷天文体系的《崇祯历书》（后被汤若望献给清政府）。可靠地月球运行轨迹，人类要到18世纪著名的经度之争时期才得以解决，之前不是不能，而是不够准确可靠。 另外要说的是节气。中国古代计算节气有两种方法，一种是土生土长的，叫平气法，就是把两个冬至之间的时间平均的划分为24份，设定节气。另一种，则是晚明时期，徐光启改历时采用的定气法，及太阳在黄道上从春分点（黄道与赤道的两个交点之一，另一个是秋分点），每移动15°设定一个节气。定气法能很好地忽略掉地球公转角速度的不均匀。 不得不说，明朝的最后几十年时间里，是中国历法天文学最灿烂的时期，有专攻古典天文学的朱载堉和邢云路，也有从西方来的利玛窦汤若望，更少不了实际推动学习交流西方文明的徐光启李之藻等。一直不是很明白，为什么西方会选择难以测量的春分点作为天文学的基准（必须承认，春分点很好，它是交点，很重要；现在弄清楚了，二至点太阳高度角变化速度很慢，中国选择冬至是利用影长放大这个变化，而西方选择春分是直接利用二分点太阳高度角变化最快的特点），不过中国古典天文学中冬至点的没落正是这个时期开始。不过对于历法中冬至放在子月还是被保留了下来。 下面填最后一个坑：为什么正月放在寅月呢？这里先说明一下斗建这个概念，古人根据北斗斗柄的指向来确定一年中的不同时间，例如斗柄东指天下皆春，斗柄南指天下皆夏，斗柄西指天下皆秋，斗柄北指天下皆冬。而和现在使用表盘时间指代方向一样，古中国使用地支指代方向，子是北方，午是南方，卯是东方，酉是西方，宫城的南门叫午门，经线是南北向所以又叫子午线。建子之月就是斗柄指北之月，算是原始太阳历观测的遗存，可以看出早期中国也采用过观察斗柄的方式。实际上秦以前，中国的王朝和诸侯曾经选择过把正月放在子月（建子）、丑月（建丑）以及寅月（建寅），但选择寅月有个好处就是它离立春这个节气很近，一年的开始放在筹备春耕的时候总是更能提醒人，新的一年确实到啦。