1、前已述及阴历日期是以月亮的圆缺为计月单位,其以逢朔为初一,以月望为十五(大月为十六日),以月晦为二十九日(大月为三十日)。然而目前记时通常用阳历日期表达,如欲将阳历日期换算成阴历日期可以用以下两种方法:其一是查新编万年历,如查1984年6月8日是阴历几日?翻开万年历6月10日是阴历十一,则逆推6月8日是阴历初九。其二可以利用公式推算阴历日期:设:公元年数1977(或1901)4qr则:阴历日期=14q+10.6(r+1)+年内日期序数-29.5n(注:式中q、r、n均为自然数,r4)例:1994年5月7日的阴历日期为:1994197717441故:q4,r1 则:5月7日的阴历日期为:144+
2、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即是阴历二十七日。蔡勒(Zeller)公式:是一个计算星期的公式。随便给一个日期,就能用这个公式推算出是星期几。蔡勒公式如下:W = C/4 - 2C + y + y/4 + 13 * (M + 1) / 5 + d -1公式中的符号含义如下:W: 星期; w对7取模得:0-星期日,1-星期一,2-星期二,3-星期三,4-星期四,5-星期五,6-星期六C: 世纪-1(前两位数)y: 年(后两位数)m: 月(m大于等于3,小于等于14,即在蔡
3、勒公式中,某年的1、2月要看作上一年的13、14月来计算,比如2003年1月1日要看作2002年的13月1日来计算)d: 日 代表取整,即只要整数部分。下面以中华人民共和国成立100周年纪念日那天(2049年10月1日)来计算是星期几,过程如下:w=y+y/4+c/4-2c+26(m+1)/10+d-1=49+49/4+20/4-220+26(10+1)/10+1-1=49+12.25+5-40+28.6=49+12+5-40+28=54 (除以7余5)即2049年10月1日(100周年国庆)是星期五。再比如计算2006年4月4日,过程如下:=6+6/4+20/4-2*20+26*(4+1)/
4、10+4-1=-12 (除以7余2,注意对负数的取模运算!) 不过,以上的公式都只适合于1582年(我国明朝万历十年)10月15日之后的情形。罗马教皇格里高利十三世在年组织了一批天文学家,根据哥白尼日心说计算出来的数据,对儒略历作了修改。将年月日到日之间的天宣布撤销,继月日之后为月日。后来人们将这一新的历法称为“格里高利历”,也就是今天世界上所通用的历法,简称格里历或公历。电子万年历:很多人都一直在找换阴阳曆的公式。我也尝试过在1988年到1992年之间。曾读过高平子天文前辈所著学曆散论瞭解古曆的变更和阴阳曆的缺陷。才知道由于月球转动的不稳定不规则,确定无公式可寻。这也是古代中国每百年必改曆的
5、原因。阴曆最大的问题是在如何置闰。好像不难,因为阴曆基本法则如下月朔日即是初一月以中气得名以包含雨水中气月为正月,即是寅月月无中气者为闰月,以前月同名如果,日月转动循还有规则的话, 推演一套阴阳曆转换的公式并不难。问题在有时一个太阴月比一个太阳月还要长。如此一个太阴月就有可能包括两个中气。此双中气月后的阴曆月名就全部乱掉了,直到下一个假闰月后才调整过来。一般人接触到的阴阳曆是民用曆法,它是政府颁令的以东经120度计算的曆法或称中原标准时间或北京时。如果,我们用不同时区、不同经度为子午线来重新计算阴阳曆,民用曆法的置闰法则出了很大的问题。不同时区的闰月可能落在不同月。换言之,在一百年内,任何两个
6、时区的闰月顺序模式是会不相同的。高平子前辈书中提到了曆理置闰法。如果应用曆理置闰法到不同时区,则所有不同时区的闰月都落在相同月。如此不同时区、不同经度的阴阳曆置闰之问题就消失了。民用置闰和曆理置闰的不同是在民用置闰,如果月朔日和中气同一天,则该阴曆月包含那个中气。在曆理置闰,如果月朔日和中气同一天,月朔日时间必须在中气时间之前,则该阴曆月才包含那个中气。简言之,民用置闰比较月朔和中气日期;曆理置闰比较月朔和中气日期、时、分、秒。由此可知,没有精确的太阳和月亮的时间数字,阴曆的闰月可能会排错了。基于这些理由,我著手寻找天文公式计算精确的太阳和月亮在纬度的时间。当年没有网路,发了大半年于美国南加州
7、各大图书馆及大学,找寻答案。1993年出版了中美天文万年曆一书。书中精确的天文日月时间只从1900到2010年。因恐2011后时间误差超过一分钟,不够精确,不敢印出。今年2002从网路资讯,确定太阳和月亮时间的精确度后,百忙中重新整理资料,提供给需要阴阳曆转换公式的朋友。整理出的太阳和月亮时间数字是从西元1年到2246年。有曆理和中国民用两套曆法。数字内容清清楚楚的看出民用曆法的敝端。例如,从西元1600年到2246年,民用曆法双中气的阴曆月有22个,曆理曆法只有5个。民用曆法甚至在2033、2128和2242年中,三个月之间居然跑出两个双中气;换言之,三个月中多出两个假闰月。前后12个阴曆月
8、中有三个闰月,闰月的去留造成许多学者的讨论和困恼。曆理曆法在此三年中,却没有发现到双中气阴曆月。闰月的去留只要把双中气月后的假闰月取消,则曆理曆法近乎于完美。由此可知,民用曆法问题很大,应该废除。上次阴阳曆重大改曆在1645年,已经超过350年。随著天文科学的进步,中国阴阳曆应该使用较精确的曆理曆法。免得后代子孙再浪费时间讨论置闰去留的问题。阴阳曆应用在八字算命、紫微斗数、农民曆、遁甲曆最多。很多人不知道排八字天干地支只用阳曆而不用阴曆。发了许多时间在研究阴阳曆的转换。其实八字只使用太阳中节气,和月亮没有任何关系。紫微斗数则需要阴曆日期去排命盘。美国时区的阴曆日期有一半和中国时区的阴曆日期差一
9、天,因为时差超过12小时;初一就可能在不同日之故。有位在加拿大职业算命的朋友,精通八字和紫微斗数,研究其女命盘。八字论父母,合情合理。斗数父母宫,看不出自己影子。后来,在中美天文万年曆一书发现了差一天之解答。曾有一位退休博士用了近三十年找寻阴阳曆的公式,问遍两岸各大天文台,得不到答案,直到发现中美天文万年曆一书。最后,希望我重新整理的中国阴阳曆的天文数字和原始程式,能给有求知欲于阴阳曆转换方法的读友一个答案,以免得不到答案而遗憾终身。excel公历转农历的四种方法尽管通过很多渠道可以轻松获取公历转农历,但是对excel迷们还是很期待用excel来实现公历转农历。设想一下,IT部落窝会员们的信息
10、都是以阳历注册的,我们也可以使用下面即将介绍的方法实现excel公历转农历。excel公历转农历方法一:使用text函数A列是公历日期,我们在B1单元格输入公式:=TEXT(A1,$-130000yyyy年m月&IF(LEN(-TEXT(A1,$-130000dd)=1,初,)&d),下拉完成公历转农历。excel公历转农历方法二:使用text+MID函数A列仍然是公历,B1输入公式:=MID(甲乙丙丁戊己庚辛壬癸,MOD(TEXT(A1,$-130000e)-4,10)+1,1)&MID(子丑寅卯辰巳午未申酉戌亥)-4,12)+1,1)&年TEXT(A1,$-130000DBNum1m月d日
11、即可。excel公历转农历方法三:使用text+MID+ CHOOSE+ YEAR函数A1为公历,B1输入:=CHOOSE(MOD(YEAR(A1)-1900,10)+1,庚辛壬癸甲乙丙丁戊己CHOOSE(MOD(YEAR(A1)-1900,12)+1,子丑寅卯辰巳午未申酉戌亥dbnum1$-130000年m月IF(-TEXT(A1,$-130000d)11,dbnum1$-130000d)excel公历转农历方法四:使用自定义函数上面介绍的excel公历转农历都是使用excel内置函数完成的,有一个弊端就是公式太长,如果使用自定义函数,在公式栏就可以简化输入。如下图所示,我们在B2输入公式:
12、=nongli(A2),即可。C列农历简称中C2公式是:=RIGHT(B2,LEN(B2)-8)。关于自定义函数的使用方法请参考:excel自定义函数添加和使用方法下面是此自定义函数相关的代码:Public Function NongLi(Optional XX_DATE As Date)Dim MonthAdd(11), NongliData(99), TianGan(9), DiZhi(11), ShuXiang(11), DayName(30), MonName(12)Dim curTime, curYear, curMonth, curDayDim GongliStr, NongliStr, NongliDayStrDim i, m, n, k, isEnd, bit, TheDate获取当前系统时间curTime = XX_DATE天干名称TianGan(0) = TianGan(1) = TianGan(2) = TianGan(3) = TianGan(4) =
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1