韩国农历和中国农历为什么有时会差一天？
因为农历要求新月诞生的时刻——朔时（合朔时刻）依照历法必须设置为一个月的初一，初一当天称之为朔日（new moon day）。由于时差，朔时在不同地区分属两日，会导致农历相差一天。韩国所在的时区比中国早一个小时，一旦合朔时刻在23时~0时之间，相应韩国本地观察到的合朔天象将发生在0时以后，导致初一的日期滑动至第二天。 合朔时间和时区差异引发的农历日不同步 狭义来说，中国农历（国家标准《农历的编算和颁行》GB/T33661—2017）只适用于东八区（UTC+8）的地区。现而今的中国农历的历法是民国时期最终敲定的《紫金历》，它是一种阴阳历：月球的平均公转周期为29.53059日，所以农历月也有大小月，“阴”是要保证每个月的朔时（新月之始）落在初一；“阳”是要保证接近地球的平均公转周期365.24219879天，农历每年的长度是不同的，有的会多于365.24219879日，有的会少一些，这里的“多”和“少”是通过设置闰月、大小月来伸缩的。 历法需要适时修订，减小误差，中国古代的各种历书在颁布之初往往是准确度很高的，但是随着时间推移，会累积误差。（扩展阅读：农历历法的变迁，需梯） 大家常说的农历“三年一闰、五年两闰、十九年七闰”是如何得到的？请注意下面两个计算结果 春秋时历法编算者就发现了235个朔望月与19个回归年的时间非常接近，于是采用十九年七闰法编制农历，但19个回归年比235个朔望月短了0.08687299日，即2小时5分5秒82，所以过上\frac{1}{0.08687299}\times19年=218.710096年，偏差就累积1日了。果不其然，后来观测精度提高后，南北朝祖冲之就发现了十九年七闰法也很粗糙，他创制的《大明历》实行391年144闰。 365.24219879日\times391年=142809.699727日\\ 29.53059日\times\left( 391年\times12月 +144闰\right )=142809.93324日 而在现代天文学的帮助下，我们已经掌握了更精确的日地月运行数据，根据（国家标准《农历的编算和颁行》GB/T33661—2017），历法编算使用回归年而非恒星年，在此我们设回归年数为 x ，闰月数为 y ，当计日误差控制在0.1以下时， x 和 y 有如下关系： \Delta = \left| 365.24219879x-29.53059\cdot\left( 12x +y\right ) \right|<0.1 可以用Python3代码计算一下35000年内 x 年 y 闰的数据，不会代码的同学可以跳过代码。 结果不妨做成表格： 祖冲之提出的391年144闰说白了就是1个334年123闰+3个19年7闰，此后还有古人提出1021年376闰，其实就是3个334年123闰+1个19年7闰，可以看成是观测精度提高后，对前两种闰法的加权修正。而我们上表计算出的5439年2003闰显然也是1个1021年376闰+1个4418年1627闰。 我们一览上述表格中”年闰比“数据，可知平均约2.7年1闰，而且在不断逼近一个常数，这个常数是多少呢？ 考虑回归年长度为定值，令 \Delta = \left| 365.24219879x-29.53059\cdot\left( 12x +y\right ) \right|=0 ，容易解出： \frac{x}{y}=\frac{1}{\frac{365.24219879}{29.53059}-12}\approx2.7154268905231946 ，所以是每2.7154268905231946年1闰，即平均991天18小时55分25秒376毫秒 1闰。 我们还可以往后推算，得到37052年13645闰，但没有意义。且不说到时人类还存不存在，就回归年而言，当今学界回归年的测试数据是根据百余年的平均值计算的结果。每个回归年的时间长短并不相等，三万年以后误差有多大更是十分难说，毕竟回归年不是一成不变的，而是古大今小，有缓慢缩短的趋势，回归年值也是应及时修正的，考虑太长远没有意义。x 年 y 闰也统统都只是近似游戏，有了更精密的观测数据后，非要追求所谓”x 年 y 闰“，那同样是没有意义。 放眼古代，西汉《太初历》、隋朝《开皇历》、唐朝《大衍历》、元明《授时历（大统历）》、清朝《时宪历》皆有作者在更精确的观测数据下的推陈出新改进，是对旧历法的不断修正： 可以说，历法的精度和观测精度是密不可分的。每一次的修正都是为了追求更加符合科学观测和计算的结果，为了符合祖冲之观测的天象、为了契合第谷开普勒计算的图纸、为了融入牛顿的天体运动体系、为了囊括爱因斯坦相对论天文学的研究成果……农历的计算会永远与时俱进地使用计算时的最新科研成果和数据，因而如前文一样追求一个x 年 y 闰的大闰数如今只能说是自娱自乐。其实公历也是这样不断完善的，在这个科学文明的时代，由于地球自转的不均匀性和长期变慢性（主要由潮汐摩擦引起的），为保持协调世界时接近于世界时时刻，消除累积误差，国际计量局甚至还统一规定在公历年底或年中（也可能在季末）对协调世界时增加或减少1秒，称为闰秒。 如今，农历的精确度已经很高了，几百年、几千年以后某次合朔、某次节气的精确时间都能通过计算机模型计算得出，因此农历的编写就变得很方便了。可以说，农历是”硬把自己嵌进观测记录或预测天象之中去”的一种历法。 农历日期的计算需要先预测清楚日月地的位置，再去按其历法要求规律填充月份及日期，由于观测模型太过于复杂，因此不太好寻求一个通项公式。计算机编程中，日历的公历转农历也不能凭空徒手去码代码计算，它不像公历一样有规律可循地通过程序就可以直接计算出来，农历一般是通过查表法（类似于查字典的方式）获取。 诸如这样的代码项目https://github.com/opprime/calendarist/，也是把从1900年~2100年每年春节对应的阳历日期时间戳写死了放进去的。 那么既然说查表，这个表总是人编算出来的吧？在前文提到的国标中，对于计算农历的计算模型和精度要求如下： 虽然韩国农历和中国农历有着相似的历法，但是由于时区的关系二者有时会出现不同，一旦测算到的朔时在东八区的北京时间23时以后、24时以前，那么当天是中国农历初一；但是此朔时在韩国的东九区（UTC+9）已经是新一天的0时以后、1时以前，那么第二天才能是韩国农历初一。于是就会出现大小月不同，以保证农历初一和朔时同步的情况，届时两个时区的历法甚至会有一天的偏差。 例如：2013年，中国的农历四月仅有29天，但韩历四月有30天。因为北京时间2013年6月8日（农历五月初一）当天23:56合朔。 节气和时区差异引发的农历月不同步 节气时刻落在合朔前后的半夜，可能导致不同时区的农历历法产生一个月的日期偏差。 讲此之前，绕不开二十四节气。二十四节气是按照太阳黄经角度（地球在公转轨道上的位置）来确定的，太阳在天球上的视运动是因为地球绕太阳公转。历法国标要求节气的标注也要精确到秒级别，古代没有公历的时候，需要由钦天监之类的天文机构推算标注，但是节气在农历上日期摆动幅度很大（最大时长可达一个月）；引入公历以后，日期在公历上可以保证前后摆动一两天。同样的道理，如果某个节气的具体时间出现在北京时间的23时以后、24时以前，那么日韩日历标注的二十四节气的公历日期就会比中国的公历日期迟一天。 在顺治以前，节气的测算采用平气法，等日期间隔设置节气，但是隋唐时期就有人发现日地间运动并非严格匀速，所以又发明了定气法，考虑精确的黄经角度而非均分轨道，用插值计算去逼近节气的日期，但是此后的大部分时间都没有被官方历书采用，直到顺治历改。 前文提到，月份的初一规定是硬性的，朔日就是合朔当日，只看本时区的合朔时间就可以。公历月中下旬20日前后的那个节气会被称为中气（雨水、春分、谷雨、小满、夏至、大暑、处暑、秋分、霜降、小雪、冬至、大寒），而闰月的规则要参考中气。 这里有一个彩蛋：西方命理黄道十二星座的分界时刻，其实就是交中气的时刻，因为星座算命和十二中气的出发点都是太阳周年视运动，十二星座正好对应农历十二中气。各类星座命理图书、文具、纪念册等材料上所标注的各星座具体日期确实常常会相差一两日，就是因为每年的中气交接时刻所在的具体日期并非固定日期。这类材料有关星座的阐述并不能具体不到年份，因而在日期上只能表述个大概。某人假如恰出生于星座交界日期附近，依各类材料，其所述星座常常莫衷一是，便可以查询一下当年中气时刻，对照自身出生日期，以确定自己到底是属于前一个星座还是后一个星座。 按照前文所述的国标，农历的编排规则如下（浏览者权且一看，后面我来解释一下）： 简言之，汤若望制定的置闰法则现在仍在使用，说句人话，闰月的规律可以总结为以下几条： 闰月的逻辑就先让12个农历月份（在总体数量上）盯紧12个中气，如果年头一多，相邻两冬至间多积了1个月份，就塞个无中气的闰月进去，使得后续月份序数得以调整，能够追平中气。 为什么有的无中气月份竟然不是闰月（只能做假闰月）？就是因为附近有其他月份含了2个中气，（汤若望认为）总的来说月份序数和中气仍然呈追平关系，就不需要额外置闰再追了。 农历的闰月出现的频率和地球的近日点有很大的关系，大部分闰月都在夏季前后，而冬季前后的闰月则较少。这是因为冬季的地球位于近日点附近，线速度和角速度都比较快，较为容易产生含两个中气的月份；而夏季的地球位于远日点，线速度和角速度都较慢，对应的节气间隔就相对长，更有可能突破一个朔望月，所以月内无中气的机会多了，相对闰月机会多了。 但是，近日点在黄道上不是固定的，而是相对春分点正在缓慢东移，地球的近日点在进动（东进），因而春分点在西移。近日点与春分点的会合周期约2万年。所以放眼长远，1万年后地球近日点将移至夏季，届时夏季的闰月数量就会减少，冬季的闰月反而会增多。 北京时间2012年5月20日23:15交小满中气，5月21日7:47合朔，故20日为农历四月三十，接下来的一个农历月只有芒种而没有中气，故置闰四月。而在东九区的韩国，小满是首尔时间5月21日0:15，这样一来，在中国本无中气的农历闰四月，按照韩国的区时却包含了小满中气，所以这个月就不能作为闰月了，而其前一个月（公历2012.04.21～05.20，即中国的农历四月）按照韩国的区时只有立夏而没有中气，故韩国农历置闰三月。 注意：虽然大部分雨水节气都是在正月内（其他月以此类推），但是国标中没有任何说法支持“正月必含雨水、二月必含春分“这种《授时历》上的旧论，此类旧论在顺治二年（1645年）历法改革中就早已废弃。 《清史稿·时宪志》康煕甲子元法： 意思是两冬至月的左闭右开区间含13个月时，取最先无中气的月份为前一个月的闰月。 当前国标有关中气和序数月的包含关系中的相关说法中，同样只是规定了十一月必含冬至。 著名的2033年置闰问题就是一例打脸“正月必含雨水、二月必含春分“的历算问题。2033年置闰问题在顺治历改中早已有圆满解决的预案，且由于大清与朝鲜、越南的宗藩关系，该年置闰月份的确定在《时宪历》派生系的当今越南农历、韩国农历中也不是问题，但是在日本民间旧历《天保历》中同样存在置闰难题，原因在于《天保历》不是由《时宪历》发展而来，而是参考置闰法老旧的《授时历》并经过两次独立的小改革发展而来的。 2032年末-2033年-2034年初的农历月份与节气包含统计如下表： 2033年中的第八、十二、十四个月都无中气，不少的旧农历万年历材料上常常写着闰七月或闰2034年的正月，但是按照国标要闰十一月。强如罗老师的“锤子日历”APP也把2033年闰十一月标错，可见2033年问题确实是检验农历是否准确的试金石。 为何2033年只能闰十一月？ 第一步：先确定2032、2033年的冬至中气所在的朔望月为农历十一月，然后数得2032年农历十一月~2033年农历十一月（不含）之间仅有12个朔望月周期，所以其中不能加插闰月，所以8月25日不能设闰七月初一，只能设八月初一； 第二步：先确定2033、2034年的冬至中气所在的朔望月为农历十一月，然后数得2033年冬至十一月~2034年农历十一月（不含）之间有13个朔望月周期，所以这里面必含一个闰月，而在2033年冬至后的第一个无中气之月恰好是2033年的第十二个月，所以就定为闰十一月了。 第三步：既然，2033年已经闰了十一月了，就不再闰2034年正月了。 而日本《天保历》的置闰规则是明治45年（1912年）由平山清次给出的”平山规则“确立的： 即： 日本《天保历》自1844年制定以来（或严格来说自平山规则明文规定以来），遇到2033年秋~2034年春这种情况还属首次，所以一下子给日本人整不会了。学界和研究者普遍认为最优的解决办法是参考清《时宪历》之闰月法则设置闰十一月。日本日历文化振兴协会自2014年7月开始也举办过有关此问题的学术研讨会，并于2015年8月发表公告推荐闰十一月，同时声称关于新的”置闰规则“有待进一步研究。 行政原因导致的时区历法变动 清朝时，李氏朝鲜奉大清为正朔，大清颁布历法《时宪书》或合订本《御定万年书》也会标注好朝鲜的日期和节气供其使用： 乾隆五十四年（1789年）还增加了安南（越南），嘉庆七年（1802年）历书又增琉球。虽然依照北京本地的视太阳时而定的朔日日期、节气日期对于广大偏远地区价值有限，但是历书所写的各地合朔和节气的当地具体时刻，则体现了清代统治者对于广袤领土的重视。即使你本地要等到明日凌晨才合朔，但是官修历书严厉地表示，因为京师本地是前半夜合朔，所以你只能今天过初一。对于领土上的人民，奉正朔意味着对皇权的绝对认同。 嘉庆十四年，前赴琉球册封琉球国王尚灏的册封正使、工科掌印给事中费锡章回京后上奏嘉庆帝： 意思是我们大清连朝鲜和越南都照顾到了，琉球这么乖，节侯时令和东部沿海的浙江福建地区又差不太多，编历书时不妨都编进去。 王元崇在《清代时宪书与中国现代统一多民族国家的形成》一文中说： 如今的时代，中国农历严格以120°E的东八区北京时间为准，新加坡、马来西亚作为东八区时区的国家也可以使用，但是实际上它对于东七区（UTC+7）、东六区（UTC+6）的中国境内的地区说不上精确，更多是法令上的约束。单独为东七区和东六区设置自己的农历也会增加成本。历法是科学问题，也是个政治问题，历法的颁订可以彰显统治者的权威。 虽然1912年之前，清政府钦天监制订国家的标准历法《御定万年书》（或《时宪书》）是按照北京的地方视太阳时（GMT+7:45:32）计算时间，但是清末上海开埠通商后，商人们货物交接早已经改用120°E的GMT+8时间了；南京国民政府于1929年将办公时间从北京子午线的视太阳时变换到120°E的GMT+8，但台港澳等地民间在1978年前仍广泛使用北京的子午线；共和国把民国分的5个时区改成单一时区GMT+8；美国本土有四个时区，还有所谓“日光节约时”（Daylight Saving Time），而中国差不多大，却只有一个时区，这不是统治者不懂现代交通工具的发达产生时区分划的需要的科学原理，而是考量了其国内的因素、人民的状况等统治成本做出的决定。 台湾当前和内地、港澳一样是东八区（UTC+8），但与在日殖时期却是东九区（GMT+9），和日本同一时区，也是为了方便统治。再比如满洲在民国时期以及伪满初期，有两个时区：长白时区（GMT+8.5）与中原时区（GMT+8），在伪满中后期用日本的东九区（GMT+9）时间；马来西亚地区在日占时期也是东九区（GMT+9）,但如今为了交流方便和新加坡都改成了东八区（UTC+8），而经度类似的越南仍然是东七区（UTC+7）。 朝鲜在2015年8月15日~2018年5月5日使用UTC+8:30，朝鲜农历和二十四节气与以前相比也相应变动了，但这几年的合朔时间确实都没有在北京时间的23点以后的情况，所以农历各月份的日期都没有向前变动（他们不怎么看重农历， 初代大元帅认为是封建糟粕，一度废除过，后来恢复了春节、端午、中秋等几个传统节日）；不过节气是有日期变动的，北京时间2015年11月22日23:25交小雪中气、2016年4月19日23:29:23交谷雨中气，朝鲜的当年节气都与中国是同一天，而非与韩国同一天（但是改时区的决定确实是2015年当年才有的决定，当年日历都印好了，提前半年开工准备2016年日历的印刷厂和程序员实惨）。 2018年又坑了一波日历印刷厂和程序员。 (有关GMT和UTC的启用时间和区别请自行查阅，基本上是等价关系，20世纪中叶后，UTC越来越多代替了GMT) 越南也有农历的，我使用的一款越南人开发的挂件软件（Magic Launcher Pro）上面可以显示越南农历日期，大部分时候是对得上的，但是越南农历和中国农历也不是完全同步的，2007年2月18日是猪年的春节正月初一，但是越南是2月17日过春节，就是因为合朔发生在北京时间2月18日00:14，这个日期在越南被归为前一天。单就新年不同步的情况，类似的还有2027年2月6日羊年新年（朝韩2月7日），2030年2月3日狗年新年（越南2月2日）等等。 大部分海外华侨会使用中国农历历法，但有些居于南半球的澳洲和新西兰的华侨会出版按当地时间制作的南半球版本的历书，会应当地季节而将节气错开半年。 WiKi上也有一个总结科普，我贴过来 东亚地区之阴阳合历大多源自华夏历法或受其影响，如藏历、和历及朝鲜半岛和越南历法等。目前由于时区差别，大中华地区（UTC+8）、韩国（UTC+9）与越南（UTC+7）的农历版本并不一致，因此各国农历日期也不完全一致。最常见的情况是由于时差，朔时在不同地区分属两日，导致农历相差一天。如在1968年，南北越因时差问题分别在不同日期庆祝了越南新年。在极端情况下时差还会影响到置闰，导致不同地区农历在几个月内会相差一个月。由于农历规定冬至日必须在冬月（十一月），由于时差原因，有时在一地朔时和冬至时刻落在同一天，但在另一地朔时和冬至时刻分属两天，这导致两地冬月相差一个月，并影响到置闰以及冬月附近的诸多月份。例如1984年冬至在（UTC+0）的12月21日16:09（北京时间在12月22日0:09，但越南时间在12月21日23:09），而新月在（UTC+0）的12月22日11:35（中国和越南时间均在12月22日），这导致两地冬月相差一个月。受此影响，中国农历在1984年置闰十月，但越南农历则在1985年置闰二月。另外，由于农历规定若两冬月间不计冬月剩余12个月，则置闰于两冬月间第一个无中气之月。朔时和其他中气时刻的关系也可能在一地为同一日，在另一地分为两日。这会导致两地对无中气之月的判定出现差异，同样可能影响置闰，并导致农历在几个月内相差一个月（例如2012年中国闰四月而韩国闰三月），部分软件未能因应各国时间基准而调整会造成错误。 南京紫金山天文台作为全世界主要的农历测算颁行单位，主导制定了名为GB/T 33661-2017《农历的编算和颁行》的国家标准。规定了很多历法基础概念的定义及算法规则，并以现代科学和天文学技术为基础对农历的计算和制定做了规定，比如规定冬至为节气之首（而非立春）、规定有冬至之月份为子月（十一月）、规定寅月建正、规定采用国际通用天体模型且精度应达到1秒，并且要求公开发行的日历产品必须包含西历和农历的日期对照以及二十四节气，符合标准规定的编排规则、计算模型和精度及表示方法，以有效遏制内容错误的农历日历产品随意发行的无序状态。 日本原使用中国历法计算本国日期，从明朝亡后之1685年开始自行编制历法《贞享历》，几经改革历法，直到明治年间的1873年起废除该国的旧历《天保历》改用西历《格里历》，并于1910年起停止在官历内并记旧历。但目前日本国立天文台每年2月都会发报的“暦要項”官报中仍有节气和朔弦望等资料可供自行计算农历。现时日本国内仅有如中秋节等少量节日按农历庆祝，其余绝大多数原以农历日期庆祝之节日均提前约一个月，改成了按照西历之相同日期庆祝（如日本的端午节就在西历5月5日），实际上民国时期政府办公废除农历时也层遭遇民间反弹，详戳：民国时期农历曾被计划废除 遭社会各方抵制。 题外话：干支历法 传统的算命八字的干支纪年法以立春而非初一为岁首。一共有年柱、月柱、日柱这六个字（因为竖着并排写就像三根柱子一样），每一柱的周期都是60，年份六十年一轮回、月份也是六十月一轮回，日期也是。如果算上具体时辰，就会有八个字，称为四柱八字。 年份的分界点是正月初一（纪年法）或立春（八字）。 例如：1992年是猴（申）年，1993年是鸡（酉）年。如果某人在1993年1月27日出生，干支纪年法的前六个字应为癸酉年、癸丑月、戊申日，但是命理上其八字的前六个字却应该是壬申、癸丑、戊申。这是一种干支年份和农历年份稍有不同的情况。 月份的分界点在月初的节气上，每年以立春到惊蛰之间的时间记为干支纪年的寅月，也是正月(好像也和农历正月大部分重合)，很久以前有过子月是正月的规定，那时候规定新年是农历十一月，这也就是“子正”和“寅正”的区别。因此二十四节气的具体时间也会影响月份干支的判别，在节气附近出生的人想要查询自己的八字，以求命理测算，就要反查当年此节气的具体分秒时间，以确定八字的月份是上一个月还是下一个月，毕竟每个月份主令的五行是不同的，春月木盛、夏月火盛、秋月金盛、冬月水盛。月令对八字的格局影响很大。 南半球的八字的月份是倒置的，子月在农历11月左右，子水正盛，但是南半球要转换成午月，毕竟南半球是夏季，午火正盛。因此南半球的八字又和北半球不同了。 总结：中国农历是为东八区量身定做的、移植到韩国所在的东九区需要调整历法。扩展：干支纪年法同一时刻也要分时区和南北半球。 扩展阅读&参考资料 [1] 维基百科 越南新年 [2] 紫金山天文台提供的月亮合朔时刻（北京时间） [3]為什麼越南的陰曆(農曆)會跟台灣差一天 （请看9楼、10楼） [4]农历大小月是怎么确定的？其规律是什么 [5]新加坡和马来西亚为什么使用了“错误”的时区？