Q兄的那几个公式我看过了,确实不错。只是它确实只适用于古代的“平”气朔。你那个置闰公式所需的起点参数以及回归年长度、平朔望长度,在《寿星万年历》2.0版及以后各版本都有都有提供。请参考下表,它是利用现代方法反向归算得到的,计算时请保留所有的有效数字。你用29.5306计算是不行的,它跟本无法保证每个朔日正确,一般要保留6至8个有效数字才能在几百年内与古代历谱相符。当然如果只是闰月,有效数字不必很高。
上述平气、平朔的计算公式表达为:D = k*n + b , 式中n=0,1,2,3,...,N-1;下面给出各朝代颁发历法的k与b的参数,每行第1个参数为b,第2参数为k,结果D表达为儒略日数;h表示k不变b允许的误差,如果b不变则k许可误差为h/N;N是历法颁行期间朔或气的总个数。
//“朔”直线拟合参数
1457698.231017,29.53067166, // -721-12-17 h=0.00032 古历·春秋
1546082.512234,29.53085106, // -479-12-11 h=0.00053 古历·战国
1640640.735300,29.53060000, // -221-10-31 h=0.01010 古历·秦汉
1642472.151543,29.53085439, // -216-11-04 h=0.00040 古历·秦汉
1683430.509300,29.53086148, // -104-12-25 h=0.00313 汉书·律历志(太初历)平气平朔
1752148.041079,29.53085097, // 85-02-13 h=0.00049 后汉书·律历志(四分历)
1807665.420323,29.53059851, // 237-02-12 h=0.00033 晋书·律历志(景初历)
1883618.114100,29.53060000, // 445-01-24 h=0.00030 宋书·律历志(何承天元嘉历)
1907360.704700,29.53060000, // 510-01-26 h=0.00030 宋书·律历志(祖冲之大明历)
1936596.224900,29.53060000, // 590-02-10 h=0.01010 随书·律历志(开皇历)
1939135.675300,29.53060000, // 597-01-24 h=0.00890 随书·律历志(大业历)
1947168.00// 619-01-21
//“气”直线拟合参数
1640650.479938,15.21842500, // -221-11-09 h=0.01709 古历·秦汉
1642476.703182,15.21874996, // -216-11-09 h=0.01557 古历·秦汉
1683430.515601,15.218750011,// -104-12-25 h=0.01560 汉书·律历志(太初历) 回归年y=365.25000
1752157.640664,15.218749978,// 85-02-23 h=0.01559 后汉书·律历志(四分历) y=365.25000
1807675.003759,15.218620279,// 237-02-22 h=0.00010 晋书·律历志(景初历) y=365.24689
1883627.765182,15.218612292,// 445-02-03 h=0.00026 宋书·律历志(何承天元嘉历) y=365.24670
1907369.128100,15.218449176,// 510-02-03 h=0.00027 宋书·律历志(祖冲之大明历) y=365.24278
1936603.140413,15.218425000,// 590-02-17 h=0.00149 随书·律历志(开皇历) y=365.24220
1939145.524180,15.218466998,// 597-02-03 h=0.00121 随书·律历志(大业历) y=365.24321
1947180.798300,15.218524844,// 619-02-03 h=0.00052 新唐书·历志(戊寅元历) y=365.24460
1964362.041824,15.218533526,// 666-02-17 h=0.00059 新唐书·历志(麟德历) y=365.24480
1987372.340971,15.218513908,// 729-02-16 h=0.00096 新唐书·历志(大衍历,至德历)y=365.24433
1999653.819126,15.218530782,// 762-10-03 h=0.00093 新唐书·历志(五纪历) y=365.24474
2007445.469786,15.218535181,// 784-02-01 h=0.00059 新唐书·历志(正元历,观象历)y=365.24484
2021324.917146,15.218526248,// 822-02-01 h=0.00022 新唐书·历志(宣明历) y=365.24463
2047257.232342,15.218519654,// 893-01-31 h=0.00015 新唐书·历志(崇玄历) y=365.24447
2070282.898213,15.218425000,// 956-02-16 h=0.00149 旧五代·历志(钦天历) y=365.24220
2073204.872850,15.218515221,// 964-02-16 h=0.00166 宋史·律历志(应天历) y=365.24437
2080144.500926,15.218530782,// 983-02-16 h=0.00093 宋史·律历志(乾元历) y=365.24474
2086703.688963,15.218523776,// 1001-01-31 h=0.00067 宋史·律历志(仪天历,崇天历) y=365.24457
2110033.182763,15.218425000,// 1064-12-15 h=0.00669 宋史·律历志(明天历) y=365.24220
2111190.300888,15.218425000,// 1068-02-15 h=0.00149 宋史·律历志(崇天历) y=365.24220
2113731.271005,15.218515671,// 1075-01-30 h=0.00038 李锐补修(奉元历) y=365.24438
2120670.840263,15.218425000,// 1094-01-30 h=0.00149 宋史·律历志 y=365.24220
2123973.309063,15.218425000,// 1103-02-14 h=0.00669 李锐补修(占天历) y=365.24220
2125068.997336,15.218477932,// 1106-02-14 h=0.00056 宋史·律历志(纪元历) y=365.24347
2136026.312633,15.218472436,// 1136-02-14 h=0.00088 宋史·律历志(统元历,乾道历,淳熙历)365.24334
2156099.495538,15.218425000,// 1191-01-29 h=0.00149 宋史·律历志(会元历) y=365.24220
2159021.324663,15.218425000,// 1199-01-29 h=0.00149 宋史·律历志(统天历) y=365.24220
2162308.575254,15.218461742,// 1208-01-30 h=0.00146 宋史·律历志(开禧历) y=365.24308
2178485.706538,15.218425000,// 1252-05-15 h=0.04606 淳祐历 y=365.24220
2178759.662849,15.218445786,// 1253-02-13 h=0.00231 会天历 y=365.24270
2185334.020800,15.218425000,// 1271-02-13 h=0.00520 宋史·律历志(成天历) y=365.24220
2187525.481425,15.218425000,// 1277-02-12 h=0.00520 本天历 y=365.24220
2188621.191481,15.218437484,// 1280-02-13 h=0.00013 元史·历志(郭守敬授时历) y=365.24250
2321919.49// 1645-02-04
值得注意的是:儒略日数的小数部分为0.5才对应晚上0点;新唐书·历志(戊寅元历)公元619年开始使用平气定朔,之前使用平气平朔,1645年及以后使用定气定朔。
举例说明:求公元88年2月15(儒略日数为1753245)附近的朔日的具体公历日期。
88年的颁行历为后汉书·律历志的四分历,它的平朔参数 b = 1752148.041079,k = 29.53085097。先把朔日D估计为88年2月15日。又因 D = k*n+b,所以 n = (D-b)/k = 37.15,四舍五入取整得 n = 37。易得准确日期为 D = k*n+b = 1753240.68,转为公历得公元88年2月11号4时,朔日在11日。