搜档网
当前位置:搜档网 › 阴历阳历转换算法2

阴历阳历转换算法2

一. 简单的历法知识

干支的推算和历法知识是密切相关的,因此大家首先应该对历法有所了解,若已具备相关知识,可跳过此部分。历法是以太阳、月亮、地球三者在运行时间上的关系,制定时间顺序的法则。现行的历法大致分为三类太阳历,太阴历,阴阳历,

1.“太阳历”就是我们所说的“阳历”,是以“回归年” (地球绕太阳运行一周的时间)为侧重点制定历法,首先规定一个“回归年”为一年,为365天,然后规定每年有12个月,1,3,5,7,8,10,12月为大月31天,其余月为30天,由于“回归年”的准确时间是365天5小时48分46秒,四年则与实际回归年差一天,因此每四年设一个“润年”366天。

2.“太阴历”并非我们所说的农历,他是以“朔望月”(月亮绕地球一周的时间)为侧重点,首先规定一个“朔望月”的时间为一个月,然后规定12个月为一年,一个“朔望月”大约为29.5306日,因此设大月为30天,小月29天,单月是大月,双月是小月。12个太阴历的月是354天,比回归年差不多短了11天。3年就短一个多月。所以使用这种历时,新年不一定在冬天过,它可以在春天过,也可以在夏天或秋天过。它的惟一好处就是阴历上的每一个日期都可以知道月亮的形状。当今世界上除了几个伊斯兰教国家因为宗教上的原因仍然使用外,其他国家一般已经废弃不用了。

3.“阴阳历”才是我们常说的农历,之所以叫“阴阳历”是因为他兼顾了“回归年”和“朔望月”两个时间特点,他同样是首先规定一个“朔望月”的时间为一个月,大月为30天,小月29天,但农历的大小月由推算决定,以“朔”(月亮不出现的日子)为每个月的初一,并使用“闰月”的办法解决太阴历的不足。为保证每月的头一天(初一)必须是朔日,就使得大小月的安排不固定,而需要通过严格的观测和计算来确定。

设置“润月”的目的是为了使m个回归年的天数与n个朔望月的天数相等,即

m×365.2422=n×29.5306 (1)

这样置闰的方法可以使农历年的平均长度接近回归年,而农历中的月又有鲜明的月相特征,保持了公历和阴历两全其美的特点,也因此得名“阴阳历”。

再看,由式(1)有 m / n=29.5306 / 365.2422 则m、n之比为1/12、2/15……19/235

在这些分式中,分子表示回归年的数目,分母表示朔望月的数目。例如最后一个分数式 表示19个回归年中必须加7个闰月(235 - 12*19)。请看下列比较:

19个“回归年”=19×365.2422=6939.6018(天)

一个“朔望月”有29.5306天,235个朔望月 = 235×29.5306 =6939.6910(天)

19个回归年中加7个闰月后,矛

盾消除得只差:6939.6910-6939.6018=0.0
892(天)——即2小时9分多,这已经是够精确的了。

所以,农历就采用了19年加7个闰月的办法,即“十九年七闰法”,把回归年与农历年很好地协调起来,使农历的元旦(春节)总保持在冬末春初。至于如何在19年里安放这7个润月,则要根据节气。现在置闰的方法是两个冬至之间,如仅有12个月则不置闰,若有13个月即置闰。置闰的月从“冬至”开始,当出现第一个没有“中气”的月份,这个月就是闰月,其名称是在前个月的前面加一个“闰”字。

我国农历将二十四个节气分为十二个节气和十二个中气。为什末有的月会没有“中气”呢?二十四节气在农历中的日期是逐月推迟的,于是有的农历月份,中气落在月末,下个月就没有中气。 一般每过两年多就有一个没有中气的月,这正好和需要加闰月的年头相符。所以农历就规定把没有中气的那个月作为闰月。

例如2001年农历四月二十九日是中气小满,再隔一个月的初一才是下一个中气夏至,当中这一个月没有中气,就定为闰月,它跟在四月后面,所以叫闰四月。

阴阳历虽然看起来很复杂,但却使回归年,朔望月得到了完美的结合,因此自夏商代一直流传至今,“阴阳历”就是我们通常说的“农历”、“殷历”,而“阴历”则一般指“太阴历”希望大家不要搞混。

二. 干支的推算

有了历法知识推算干支只是简单的数学问题,几句话就可以解决。(以下所说日期均为农历日期)

1. 日干支的推算

日干支的推算首先要知道要推算年,正月初一的干支,由正月初一的干支推算出相关月的初一,最后再加上相应的日期数,即可得到该日干支。例如:计算2002年7月12日的干支,(1)首先要知道02年正月初一的干支是“辛亥”,“辛亥”在六十甲子的序数是48。(2)然后推算7月初一的干支:7月是单月,正月初一的干支数不加30,还是48。在7月前有三月、五月两个小月,则将正月初一的干支数减2变为46,此时的干支序数46即为7月初一的干支-----己酉(3)最后加上11即为7月12日的干支-----庚申(46+11=57)。因此如果知道每年的正月初一的干支和该年何月为小月,即可推出该年任何一日的干支。

为什末这样算能得到日的干支呢?下面我来解释一下:日干支的推算最关键的步骤是求每月的初一的干支。我们知道农历大月30天,小月29天,则由此可知两个大月一共有60天,正好是六十甲子的个数,即:如果第一个大月的初一如果是“甲子”的话,第二个大月的三十日一定是“癸亥”,第三个月的初一则一定还

是“甲子”。若是一个大月一个小月(不妨设第二个月为小月)一共有59天
,比六十甲子的个数少一个,即:如果第一个月的初一如果是“甲子”的话,第二个月的二十九日一定是“壬戌”(第二个月的初一是“甲午”,因为是前面是30天,30个甲子),第三个月的初一则一定是“癸亥”,因为是59,少了一个。由此我们则可以知道推算的原理,若想求某个月初一的干支,则只需将本年正月初一的干支减去所求日期前面的小月里缺的那些天即可,有几个小月减几天。但还要注意单双月的问题,双数月求初一干支的时候要在正月初一的干支数上加上30,单数月则不用加,原因很简单双数月的初一正好处在60甲子的中间(30),如前面说第二个月的初一是“甲午”,因为是前面是30天。2002年7月是单数月因此不加30,下面再举一个双数月的例子:

例一:2005 年4月15日

(1) 05年正月初一的干支是“甲子”,序数是1

(2) 计算4月初一的干支:

(a) 4月双数月,要在正月初一上加30,变为31(1+30),

(b) 4月前面有正月、三月两个小月,要从31中减去2,变为29,此29即为4月初一的干支序数,4月初一的干支--------壬辰

(3) 知道了4月初一的干支,只要再加上14天即为4月15日的干支数43-----丙午。

例二:2005年5月12日(计算过程中最好带着数字算)

(1) 05年正月初一的干支是“甲子”,序数是1

(2) 计算5月初一的干支:

(a) 5月是单月,正月初一的干支数不加30,还是1

(b) 5月前面有正月、三月两个小月,要从1中减去2,变为 –1

(3) 知道了5月初一的干支数,只要再加上11天即为5月12日的干支数10------癸酉

还有一种情况就是有润月,其实基本原理是一样的,也是看润月是大月还是小月,这里就不具体叙述了。以上推断需要对六十甲子的序数有所了解,最好能背下来。如果背不下来可以用下面的方法:

由于天干地支是10配12,因此干支序数的个位必为对应的天干,干支序数除以12的余数必对应地支。例如前面43,个位是3,因此天干是“丙”。43除12余7,因此地支是“午”,为丙午。

总结:只要知道某年正月初一的干支和该年何月为小月,即可推出该年任何一日的干支。例如知道05年正月初一的干支,知道05年小月为“正三五八 十腊”,就可计算出今年的日干支。 运用以上原理同样可以由阳历推出干支,只是稍有不同,有兴趣的朋友可以自己总结。

2. 月干支的推算

月的推算要比日的推算要简单的多,

根据《卜筮正宗》年上起月法口诀:

甲己之年丙作首, 乙庚之岁戊为头,

丙辛之位从庚上, 丁壬壬位顺行
流,

戊癸之年何方法, 甲寅之上好追求。

例如今年是乙酉年,根据口诀“乙庚之岁戊为头”,则今年开头为“戊寅”月,由此可继续往下推任意一月的干支。

3. 时干支的推算

首先知道日的干支,根据 日上起时法 口诀:

甲己还加甲, 乙庚丙作初,

丙辛从戊起, 丁壬庚子居,

戊癸何方法, 壬子是顺行.

例如今日是乙亥日,则由口诀“乙庚丙作初”,因此今日从“丙子”时起。

干支的推算从根本上说是简单的数学问题,因此推算方法也可能有很多。以上只是我使用的方法,算是抛砖引玉。由于时间仓促,难免有不严密、不周全的地方,还请各位老师指出。

阳历日期推算阴历日期的方法:前已述及阴历日期是以月亮的圆缺为计月单位,其以逢朔为初一,以月望为十五(大月为十六日),以月晦为二十九日(大月为三十日)。然而目前记时通常用阳历日期表达,如欲将阳历日期换算成阴历日期可以用以下两种方法:其一是查《新编万年历》,如查1984年6月8日是阴历几日?翻开万年历6月10日是阴历十一,则逆推6月8日是阴历初九。其二可以利用公式推算阴历日期:

设:公元年数-1977(或1901)=4q+r

则:阴历日期=14q+10.6(r+1)+年内日期序数-29.5n

(注:式中q、r、n均为自然数,r<4)

例:1994年5月7日的阴历日期为:

1994-1977=17=4×4+1

故:q=4,r=1 则:5月7日的阴历日期为:

14×4+10.6(1+1)+(31+28+31+31+7)-29.5n

=204.2- 29.5n

然后用29.5去除204.2得商数6......27.2,6即是n值,余数27即是阴历二十七日。

静心池验证:q=?,r=?怎样定?

n =总日数/29,5(取整数)

如何转换阴阳历?



很多人都一直在找换阴阳历的公式。我也尝试过。曾读过「高平子」天文前辈所着「学历散论」了解古历的变更和阴阳历的缺陷。才知道由於月球转动的不稳定不规则,确定无公式可寻。这也是古代中国每百年必改历的原因。

阴历最大的问题是在如何置闰。好像不难,因为阴历基本法则如下:

 * 月朔日即是初一

 * 月以中气得名

 * 以包含雨水中气月为正月,即是「寅」月

 * 月无中气者为闰月,以前月同名

如果,日月转动循还有规则的话, 推演一套阴阳历转换的公式并不难。问题在有时一个太阴月比一个太阳月还要长。如此一个太阴月就有可能包括两个中气。此双中气月後的阴历月名就全部乱掉了,直到下一个「假」闰月後才

调整过来。

一般人接触到的阴阳历是民用历法,它是政府颁令的以东经120度计算的历法或称中原标准时间或北京时。如果,我们用不同时区、不同经
度为子午线来重新计算阴阳历,民用历法的置闰法则出了很大的问题。不同时区的闰月可能落在不同月。换言之,在一百年内,任何两个时区的闰月顺序模式是会不相同的。

高平子前辈书中提到了「历理置闰法」。如果应用历理置闰法到不同时区,则所有不同时区的闰月都落在相同月。如此不同时区、不同经度的阴阳历置闰之问题就消失了。民用置闰和历理置闰的不同是:

* 在民用置闰,如果月朔日和中气同一天,则该阴历月包含那个中气。

* 在历理置闰,如果月朔日和中气同一天,月朔日时间必须在中气时间之前,则该阴历月才包含那个中气。

简言之,民用置闰比较月朔和中气日期;历理置闰比较月朔和中气日期、时、分、秒。由此可知,没有精确的太阳和月亮的时间数字,阴历的闰月可能会排错了。

基於这些理由,我着手寻找天文公式计算精确的太阳和月亮在纬度的时间。当年没有网路,发了大半年於美国南加州各大图书馆及大学,找寻答案。1993年出版了「中美天文万年历」一书。书中精确的天文日月时间只从1900到2010年。因恐2011後时间误差超过一分钟,不够精确,不敢印出。今年2002从网路资讯,确定太阳和月亮时间的精确度後,百忙中重新整理资料,提供给需要阴阳历转换公式的朋友。

整理出的太阳和月亮时间数字是从西元1年到2246年。有历理和中国民用两套历法。数字内容清清楚楚的看出民用历法的敝端。例如,从西元1600年到2246年,民用历法双中气的阴历月有22个,历理历法只有5个。民用历法甚至在2033、2128和2242年中,三个月之间居然跑出两个双中气;换言之,三个月中多出两个「假」闰月。前後12个阴历月中有三个闰月,闰月的去留造成许多学者的讨论和困恼。历理历法在此三年中,却没有发现到双中气阴历月。闰月的去留只要把双中气月後的「假」闰月取消,则历理历法近乎於完美。

由此可知,民用历法问题很大,应该废除。上次阴阳历重大改历在1645年,已经超过350年。随着天文科学的进步,中国阴阳历应该使用较精确的历理历法。免得後代子孙再浪费时间讨论置闰去留的问题。

阴阳历应用在八字算命、紫微斗数、农民历、遁甲历最多。很多人不知道排八字只用阳历而不用阴历。发了许多时间在研究阴阳历的转换。其实八字只使用太阳中节气,和月亮没有任

何关系。紫微斗数则需要阴历日期去排命盘。美国时区的阴历日期有一半和中国时区的阴历日期差一天,因为时差超过12小时;初一就可能在不同日之故。有位在加拿大职业算命的朋友,精通八字和紫
微斗数,研究其女命盘。八字论父母,合情合理。斗数父母宫,看不出自己影子。後来,在中美天文万年历一书发现了「差一天」之解答。

曾有一位退休博士用了近三十年找寻阴阳历的公式,问遍两岸各大天文台,得不到答案,直到发现中美天文万年历一书。最後,希望我重新整理的中国阴阳历的天文数字和原始程式,能给有求知欲於阴阳历转换方法的读友一个答案,以免得不到答案而遗憾终身。

中国阴阳历的天文数字和原始程式用简单英文阐述,

信息来源:

很多人都一直在找换阴阳历的公式。我也尝试过。曾读过「高平子」天文前辈所着「学历散论」了解古历的变更和阴阳历的缺陷。才知道由於月球转动的不稳定不规则,确定无公式可寻。这也是古代中国每百年必改历的原因。

阴历最大的问题是在如何置闰。好像不难,因为阴历基本法则如下:

* 月朔日即是初一

* 月以中气得名

* 以包含雨水中气月为正月,即是「寅」月

* 月无中气者为闰月,以前月同名

如果,日月转动循还有规则的话, 推演一套阴阳历转换的公式并不难。问题在有时一个太阴月比一个太阳月还要长。如此一个太阴月就有可能包括两个中气。此双中气月后的阴历月名就全部乱掉了,直到下一个「假」闰月后才调整过来。

一般人接触到的阴阳历是民用历法,它是政府颁令的以东经120度计算的历法或称中原标准时间或北京时。如果,我们用不同时区、不同经度为子午线来重新计算阴阳历,民用历法的置闰法则出了很大的问题。不同时区的闰月可能落在不同月。换言之,在一百年内,任何两个时区的闰月顺序模式是会不相同的。

高平子前辈书中提到了「历理置闰法」。如果应用历理置闰法到不同时区,则所有不同时区的闰月都落在相同月。如此不同时区、不同经度的阴阳历置闰之问题就消失了。民用置闰和历理置闰的不同是:

* 在民用置闰,如果月朔日和中气同一天,则该阴历月包含那个中气。

* 在历理置闰,如果月朔日和中气同一天,月朔日时间必须在中气时间之前,则该阴历月才包含那个中气。

简言之,民用置闰比较月朔和中气日期;历理置闰比较月朔和中气日期、时、分、秒。由此可知,没有精确的太阳和月亮的时间数字,阴历的闰月可能会排错了。

基於这些理由,我着

手寻找天文公式计算精确的太阳和月亮在纬度的时间。当年没有网路,发了大半年於美国南加州各大图书馆及大学,找寻答案。1993年出版了「中美天文万年历」一书。书中精确的天文日月时间只从1900到2010年。因恐2011后时间误差超过一分钟
,不够精确,不敢印出。今年2002从网路资讯,确定太阳和月亮时间的精确度后,百忙中重新整理资料,提供给需要阴阳历转换公式的朋友。

整理出的太阳和月亮时间数字是从西元1年到2246年。有历理和中国民用两套历法。数字内容清清楚楚的看出民用历法的敝端。例如,从西元1600年到2246年,民用历法双中气的阴历月有22个,历理历法只有5个。民用历法甚至在2033、2128和2242年中,三个月之间居然跑出两个双中气;换言之,三个月中多出两个「假」闰月。前后12个阴历月中有三个闰月,闰月的去留造成许多学者的讨论和困恼。历理历法在此三年中,却没有发现到双中气阴历月。闰月的去留只要把双中气月后的「假」闰月取消,则历理历法近乎於完美。




相关主题