荫阳历转换(农历转公历)
1947.08.22:1947-10-6
1975.12.29:1975-1-29
2008.09.02:2008-9-30
荫阳历转化公式
关于荫阳历嘛。
首先,我们知道地球公转周期为365.2422天,月球公转周期为
29.53天。而荫阳历的本质就是要把这两个周期统一起来。
那么,我们会发现,19个地球地球公转周期和235个月球公转周期的差非常接近。因此,19个公历年和235个农历月天数就重合了。所以在设计程序时候,采用19年为一个周期循环比较合理。
望采纳,谢谢。
荫历如何转换为阳历
农历(又称旧历、古历等)与阳历的转换,因设计闰月等的处理,很麻烦,还么有找到一个通用的转换公式,一般人可以通过查表(例如相当多的手机就有此功能)。现在给你以下参考资料:
一,农历闰月的计算方法
农历为什么会有闰月?——农历置闰月是为了协调回归年与农历年的矛盾。
回归年与农历年有什么矛盾呢?先记住:回归年的总长度为365.2422日,朔望月的长度为29.5306日。
十二个朔望月构成农历年,长度为29.5306×12=354.3672日,比回归年少10.88天即将近11天,每个月少0.91天,近1天。
依此,如农历年某年春节为大雪纷飞的冬天,第二年的春节就会在季节上提前11天,第16个农历年就会出现在赤日炎炎的夏天。
如按十三个朔望月构成农历年,长度为29.5306×13=383.8978日,比回归年又多出18天多。
如果按上述规定制定历法,就会出现天时与历法不合、时序错乱颠倒的怪现象——这就是矛盾。
为了克服这一缺点,我们的祖先在天文观测的基础上,找出了“闰月”的办法,保证农历年的正月到三月为春季,四月到六月为夏季,七月到九月为秋季,十月到十二月为冬季,也同时保证了农历岁首在冬末春初。
农历年中月以朔望月长度29.5306日为基础,所以大月为30日,小月为29日。为保证每月的头一天(初一)必须是朔日,就使得大小月的安排不固定,而需要通过严格的观测和计算来确定。因此,农历中连续两个月是大月或是小月的事是常有的,甚至还出现过如1990年三、四月是小月、九、十、十一、十二连续四个月是大月的罕见特例。
那么多长时间加一个闰月呢?最好的办法就是求出回归年日数与朔望月的日数的最小公倍数:我们希望m个回归年的天数与n个朔望月的天数相等,也就是应有等式:
m×365.2422=n×29.5306
在这个等式中我们不能直接求出m和n,但可以求出它们的比例:
这个比例的近似值分别为:
在这些分式中,分子表示回归年的数目,分母表示朔望月的数目。例如第六个分数式 表示19个回归年中必须加7个闰月。
19个回归年中加7个闰月的结果比较:
19个回归年=19×365.2422=6939.6018(天)
一个朔望月有29.5306天,235个朔望月=235×29.5306=6939.6910(天)
19个回归年中加7个闰月后,矛盾消除得只差:6939.6910-6939.6018=0.0892(天)——即2小时9分多,这已经是够精确的了。
所以,农历就采用了19年加7个闰月的办法,即“十九年七闰法”,把回归年与农历年很好地协调起来,使农历的元旦(春节)总保持在冬末春初。古人把235个朔望月称之为“闰周”。
农历置闰的方法可以使农历年的平均长度接近回归年,而农历中的月又有鲜明的月相特征,保持了公历和荫历两全其美的特点。
现在置闰的方法是两个冬至之间,如仅有12个月则不置闰,若有13个月即置闰。置闰的月从“冬至”开始,当出现第一个没有“中气”的月份,这个月就是闰月,其名称是在前个月的前面加一个“闰”字。
农历闰哪个月?决定于一年中的二十四个节气。
我国农历将二十四个节气分为十二个节气和十二个中气。
二十四节气在农历中的日期是逐月推迟的,于是有的农历月份,中气落在月末,下个月就没有中气。
一般每过两年多就有一个没有中气的月,这正好和需要加闰月的年头相符。所以农历就规定把没有中气的那个月作为闰月。
例如2001年农历四月二十九日是中气小满,再隔一个月的初一才是下一个中气夏至,当中这一个月没有中气,就定为闰月,它跟在四月后面,所以叫闰四月。
公农历转换的原理?
很遗憾。因为公历(现在用的是格里历,以前还曾用儒列历)和中国农历都不是严格按一个公式计算得到的,所以两个历法没有直接的公式。
试图用一个简单的公式,而不利用许多像万年历一样的数据(尽管可以简化),就达到公农历转换的目的,这是不可能的。我们能见到的所有公农历转换的软件,都存有多少不等的一些年份的历法数据。
这些数据之中,最重要的是农历的每月天数。因为农历是荫阳历,荫历部分(按月相编的部分)决定月日,阳历部分(按太阳高度编的部分)就是节气。节气基本上是与公历直接对应的,可以较容易的推算;但月相周期与地球公转的关系相对复杂,一般都需要天文观测数据授时,所以农历每月是大月还是小月没有简单的公式。
至于公历和农历的置闰,倒都有一定的方式推算,并不困难。
如果只是天文数据,其实都还是可以算的——因为天文周期十分稳定,我们只要严格地按天文周期推算就可以了。可是还有更为麻烦的一点,就是公历和农历这些历法,并不是完全严格地按照天文上的实际周期进行的,还有许多人为的因素。最著名的就是罗马皇帝几次修改2、8等月份长短,以及儒列历中因计算不准确而人为地去掉了十天等事。中国农历也有因为古代天文观测不准确造成的政府颁布的历法与天象不吻合的(我们不能苛求古人观测的精度)。所以这两部历法都是与一个时期社会有关的东西,也就没有一定的规律可循了
公历农历转换
回历、公历、农历的换算
(128 × 365+31)日÷ 128年= 365.2421875日/年
可见共置闰精度远高于现代的公历。
2.换算中一日误差之订正
《历法丛谈》以回历1387年为例,求算合公历之年月日。
解1:1387 × 0.970224+621.5774=1967.278088年
0.278088年 × 365.2422日=101.569日公历累计日数为101.57日可视为4月11日或4月12日。究竟是哪一日,当依两历在公历4月11日或12日间所具有同一的星期序数以订正。
依回历岁首星期序数计算公式:
[(138-1)×131+164] ÷30=6057,余20
6057÷7=865,余 2
故回历1387年元旦为星期2。(表)
按公历自1583年元旦(星期六)至1967年4月11日,共历:
1967-1583=384年,在这384年中依格列高利历四年一闰,百年不闰,四百年加一闰日的规则共历93个闰日,又1967年元旦后一日起至4月11日又需加 100日,则
(384 × 365+93+100+6)÷ 7=140359+7=2001,余 2余2即星期2,故回历1387年元旦在公历1967年4月11日。
因公历计算星期日数采用数据较多,计算时难免有所遗漏,现引人公历日期与星期推算表阿),供参考。
应用此表查找公元1967年4月11日星期序数步骤如下:
先在本表年份表前二位数字栏目中,查到19二字所在的位置;
再在年份表后二位数字栏目中查到67二字所在位置,自19二字处平行右移,67二字处垂直下移,二者在英文大写字母栏目中相交于字母G处;
再自月份表栏目中查到4月,自4月所在位置平行左移,查到G在4月栏目所在位置;
自日期栏目查到11日所在位置,自此位置平行右移,使与4月份栏目G在星期表相交处知为星期二,结果与回历计算所得相同。故知回历 1387年元旦确为公历1967年4月11日,而不是12日。
在换算中所得公历日数常多于31日,甚至常在200—300日或更多,需要将此数化为该年的月日时,可用下列两表。
表3 公历月份及其累计日数
三 公历换算为回历
将回历换算为公历的算式移项,整理,即可得到公历换算为国历的算式
(公历纪年一621.5691)÷0.9702=回历年月日(儒略历)……………………………………………(5)
(公历纪年一621.5774)÷0.970224=回历年月日(格氏历)…………………………………………(6)
无论回历换算为公历或相反,大体都有一日之差,以星期序数订正时,回历换算为公历,以回历的星期序数为准;相反,以公历的星期序数为准。
四 国历或公历换算为中国农历
1.回历换算为农历
仅管中国农历各年在年内月数日数都不是一个相对的稳定值,给回历与公历换算为农历上带来较多的困难,但仍然可以换算。中国农历为荫阳合历,在月份上与回历同属太荫历,惟回历每月以见新月为一月之始,其日约迟于农历合朔(初一日)1—2日乃至3日,因此只要查清二者在月份上关系,便可将回历换算为中国农历。马以愚先生称:“回教纪年及斋戒之月,均依太荫历。中国昔用夏正(即农历),有闰之年,年为十三月。故斋戒之月,遇闰则连退。如今岁斋戒值夏正之九月,岁逢闰,改岁当以八月为斋。”[8]故若求得积年及所历大荫历的月数,即可依农历十九年而有七个闰月的规律,将农历换算为回历,其日当有l——2日之差。
计算举例:已知西域鲁穆马依泽公于宋太祖建隆二年(961)应召人华编修《应天历》,并将伊斯兰天文传人中国,他的事迹已收人《中国伊斯兰百科全书》[9]与《中国回族大词典》[10]等,被列为伊斯兰与中国回族之大事。据《怀宁马氏宗谱》记载,依泽公应召人华时年已四十,生于回历勒比阿立勿里月(拉比尔·奥沃勒月,即回历三月)第二十日,故于宋真宗景德二年(1005)五月初十日。宋太祖乾德四年(966)八月十三日奉旨授世袭候爵兼司天监。求依泽公生于公历与农历的年月日。
农历和公历如何转化
很多人都一直在找换荫阳历的公式。我也尝试过。曾读过「高平子」天文前辈所着「学历散论」了解古历的变更和荫阳历的缺陷。才知道由於月球转动的不稳定不规则,确定无公式可寻。这也是古代中国每百年必改历的原因。
荫历最大的问题是在如何置闰。好像不难,因为荫历基本法则如下:
* 月朔日即是初一
* 月以中气得名
* 以包含雨水中气月为正月,即是「寅」月
* 月无中气者为闰月,以前月同名
如果,日月转动循还有规则的话, 推演一套荫阳历转换的公式并不难。问题在有时一个太荫月比一个太阳月还要长。如此一个太荫月就有可能包括两个中气。此双中气月後的荫历月名就全部乱掉了,直到下一个「假」闰月後才调整过来。
一般人接触到的荫阳历是民用历法,它是政府颁令的以东经120度计算的历法或称中原标准时间或北京时。如果,我们用不同时区、不同经度为子午线来重新计算荫阳历,民用历法的置闰法则出了很大的问题。不同时区的闰月可能落在不同月。换言之,在一百年内,任何两个时区的闰月顺序模式是会不相同的。
高平子前辈书中提到了「历理置闰法」。如果应用历理置闰法到不同时区,则所有不同时区的闰月都落在相同月。如此不同时区、不同经度的荫阳历置闰之问题就消失了。民用置闰和历理置闰的不同是:
* 在民用置闰,如果月朔日和中气同一天,则该荫历月包含那个中气。
* 在历理置闰,如果月朔日和中气同一天,月朔日时间必须在中气时间之前,则该荫历月才包含那个中气。
简言之,民用置闰比较月朔和中气日期;历理置闰比较月朔和中气日期、时、分、秒。由此可知,没有精确的太阳和月亮的时间数字,荫历的闰月可能会排错了。
基於这些理由,我着手寻找天文公式计算精确的太阳和月亮在纬度的时间。当年没有网路,发了大半年於美国南加州各大图书馆及大学,找寻答案。1993年出版了「中美天文万年历」一书。书中精确的天文日月时间只从1900到2010年。因恐2011後时间误差超过一分钟,不够精确,不敢印出。今年2002从网路资讯,确定太阳和月亮时间的精确度後,百忙中重新整理资料,提供给需要荫阳历转换公式的朋友。
整理出的太阳和月亮时间数字是从西元1年到2246年。有历理和中国民用两套历法。数字内容清清楚楚的看出民用历法的敝端。例如,从西元1600年到2246年,民用历法双中气的荫历月有22个,历理历法只有5个。民用历法甚至在2033、2128和2242年中,三个月之间居然跑出两个双中气;换言之,三个月中多出两个「假」闰月。前後12个荫历月中有三个闰月,闰月的去留造成许多学者的讨论和困恼。历理历法在此三年中,却没有发现到双中气荫历月。闰月的去留只要把双中气月後的「假」闰月取消,则历理历法近乎於完美。
由此可知,民用历法问题很大,应该废除。上次荫阳历重大改历在1645年,已经超过350年。随着天文科学的进步,中国荫阳历应该使用较精确的历理历法。免得後代子孙再浪费时间讨论置闰去留的问题。
荫阳历应用在八字算命、紫微斗数、农民历、遁甲历最多。很多人不知道排八字只用阳历而不用荫历。发了许多时间在研究荫阳历的转换。其实八字只使用太阳中节气,和月亮没有任何关系。紫微斗数则需要荫历日期去排命盘。美国时区的荫历日期有一半和中国时区的荫历日期差一天,因为时差超过12小时;初一就可能在不同日之故。有位在加拿大职业算命的朋友,精通八字和紫微斗数,研究其女命盘。八字论父母,合情合理。斗数父母宫,看不出自己影子。後来,在中美天文万年历一书发现了「差一天」之解答。
