农历转阳历怎么转Word下载.docx
《农历转阳历怎么转Word下载.docx》由会员分享,可在线阅读,更多相关《农历转阳历怎么转Word下载.docx(11页珍藏版)》请在冰豆网上搜索。
W:
星期;
w对7取模得:
0-星期日,1-星期一,2-星期二,3-星期三,4-星期四,5-星期五,6-星期六
C:
世纪-1(前两位数)
y:
年(后两位数)
m:
月(m大于等于3,小于等于14,即在蔡勒公式中,某年的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]-2×
20+[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)/10]+4-1
=-12(除以7余2,注意对负数的取模运算!
)
不过,以上的公式都只适合于1582年(我国明朝万历十年)10月15日之后的情形。
罗马教皇格里高利十三世在1582年组织了一批天文学家,根据哥白尼日心说计算出来的数据,对儒略历作了修改。
将1582年10月5日到14日之间的10天宣布撤销,继10月4日之后为10月15日。
后来人们将这一新的历法称为“格里高利历”,也就是今天世界上所通用的历法,简称格里历或公历。
电子万年历:
很多人都一直在找换阴阳曆的公式。
我也尝试过在1988年到1992年之间。
曾读过「高平子」天文前辈所著「学曆散论」瞭解古曆的变更和阴阳曆的缺陷。
才知道由于月球转动的不稳定不规则,确定无公式可寻。
这也是古代中国每百年必改曆的原因。
阴曆最大的问题是在如何置闰。
好像不难,因为阴曆基本法则如下
月朔日即是初一
月以中气得名
以包含雨水中气月为正月,即是「寅」月
月无中气者为闰月,以前月同名
如果,日月转动循还有规则的话,推演一套阴阳曆转换的公式并不难。
问题在有时一个太阴月比一个太阳月还要长。
如此一个太阴月就有可能包括两个中气。
此双中气月后的阴曆月名就全部乱掉了,直到下一个「假」闰月后才调整过来。
一般人接触到的阴阳曆是民用曆法,它是政府颁令的以东经120度计算的曆法或称中原标准时间或北京时。
如果,我们用不同时区、不同经度为子午线来重新计算阴阳曆,民用曆法的置闰法则出了很大的问题。
不同时区的闰月可能落在不同月。
换言之,在一百年内,任何两个时区的闰月顺序模式是会不相同的。
高平子前辈书中提到了「曆理置闰法」。
如果应用曆理置闰法到不同时区,则所有不同时区的闰月都落在相同月。
如此不同时区、不同经度的阴阳曆置闰之问题就消失了。
民用置闰和曆理置闰的不同是
在民用置闰,如果月朔日和中气同一天,则该阴曆月包含那个中气。
在曆理置闰,如果月朔日和中气同一天,月朔日时间必须在中气时间之前,则该阴曆月才包含那个中气。
简言之,民用置闰比较月朔和中气日期;
曆理置闰比较月朔和中气日期、时、分、秒。
由此可知,没有精确的太阳和月亮的时间数字,阴曆的闰月可能会排错了。
基于这些理由,我著手寻找天文公式计算精确的太阳和月亮在纬度的时间。
当年没有网路,发了大半年于美国南加州各大图书馆及大学,找寻答案。
1993年出版了「中美天文万年曆」一书。
书中精确的天文日月时间只从1900到2010年。
因恐2011后时间误差超过一分钟,不够精确,不敢印出。
今年2002从网路资讯,确定太阳和月亮时间的精确度后,百忙中重新整理资料,提供给需要阴阳曆转换公式的朋友。
整理出的太阳和月亮时间数字是从西元1年到2246年。
有曆理和中国民用两套曆法。
数字内容清清楚楚的看出民用曆法的敝端。
例如,从西元1600年到2246年,民用曆法双中气的阴曆月有22个,曆理曆法只有5个。
民用曆法甚至在2033、2128和2242年中,三个月之间居然跑出两个双中气;
换言之,三个月中多出两个「假」闰月。
前后12个阴曆月中有三个闰月,闰月的去留造成许多学者的讨论和困恼。
曆理曆法在此三年中,却没有发现到双中气阴曆月。
闰月的去留只要把双中气月后的「假」闰月取消,则曆理曆法近乎于完美。
由此可知,民用曆法问题很大,应该废除。
上次阴阳曆重大改曆在1645年,已经超过350年。
随著天文科学的进步,中国阴阳曆应该使用较精确的曆理曆法。
免得后代子孙再浪费时间讨论置闰去留的问题。
阴阳曆应用在八字算命、紫微斗数、农民曆、遁甲曆最多。
很多人不知道排八字天干地支只用阳曆而不用阴曆。
发了许多时间在研究阴阳曆的转换。
其实八字只使用太阳中节气,和月亮没有任何关系。
紫微斗数则需要阴曆日期去排命盘。
美国时区的阴曆日期有一半和中国时区的阴曆日期差一天,因为时差超过12小时;
初一就可能在不同日之故。
有位在加拿大职业算命的朋友,精通八字和紫微斗数,研究其女命盘。
八字论父母,合情合理。
斗数父母宫,看不出自己影子。
后来,在中美天文万年曆一书发现了「差一天」之解答。
曾有一位退休博士用了近三十年找寻阴阳曆的公式,问遍两岸各大天文台,得不到答案,直到发现中美天文万年曆一书。
最后,希望我重新整理的中国阴阳曆的天文数字和原始程式,能给有求知欲于阴阳曆转换方法的读友一个答案,以免得不到答案而遗憾终身。
excel公历转农历的四种方法
尽管通过很多渠道可以轻松获取公历转农历,但是对excel迷们还是很期待用excel来实现公历转农历。
设想一下,IT部落窝会员们的信息都是以阳历注册的,我们也可以使用下面即将介绍的方法实现excel公历转农历。
excel公历转农历方法一:
使用text函数
A列是公历日期,我们在B1单元格输入公式:
=TEXT(A1,"
[$-130000]yyyy年m月"
&
IF(LEN(--TEXT(A1,"
[$-130000]dd"
))=1,"
初"
"
"
)&
d"
),下拉完成公历转农历。
excel公历转农历方法二:
使用text+MID函数
A列仍然是公历,B1输入公式:
=MID("
甲乙丙丁戊己庚辛壬癸"
MOD(TEXT(A1,"
[$-130000]e"
)-4,10)+1,1)&
MID("
子丑寅卯辰巳午未申酉戌亥"
)-4,12)+1,1)&
年"
TEXT(A1,"
[$-130000][DBNum1]m月d日"
即可。
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,"
[$-130000]d"
)<
11,"
[dbnum1][$-130000]d"
))
excel公历转农历方法四:
使用自定义函数
上面介绍的excel公历转农历都是使用excel内置函数完成的,有一个弊端就是公式太长,如果使用自定义函数,在公式栏就可以简化输入。
如下图所示,我们在B2输入公式:
=nongli(A2),即可。
C列农历简称中C2公式是:
=RIGHT(B2,LEN(B2)-8)。
关于自定义函数的使用方法请参考:
excel自定义函数添加和使用方法
下面是此自定义函数相关的代码:
PublicFunctionNongLi(OptionalXX_DATEAsDate)
DimMonthAdd(11),NongliData(99),TianGan(9),DiZhi(11),ShuXiang(11),DayName(30),MonName(12)
DimcurTime,curYear,curMonth,curDay
DimGongliStr,NongliStr,NongliDayStr
Dimi,m,n,k,isEnd,bit,TheDate
'
获取当前系统时间
curTime=XX_DATE
天干名称
TianGan(0)="
TianGan
(1)="
TianGan
(2)="
TianGan(3)="
TianGan(4)="
TianGan(5)="
TianGan(6)="
TianGan(7)="
TianGan(8)="
TianGan(9)="
地支名称
DiZhi(0)="
DiZhi
(1)="
DiZhi
(2)="
DiZhi(3)="
DiZhi(4)="
DiZhi(5)="
DiZhi(6)="
DiZhi(7)="
DiZhi(8)="
DiZhi(9)="
DiZhi(10)="
DiZhi(11)="
属相名称
ShuXiang(0)="
鼠"
ShuXiang
(1)="
牛"
ShuXiang
(2)="
虎"
ShuXiang(3)="
兔"
ShuXiang(4)="
龙"
ShuXiang(5)="
蛇"
ShuXiang(6)="
马"
ShuXiang(7)="
羊"
ShuXiang(8)="
猴"
ShuXiang(9)="
鸡"
ShuXiang(10)="
狗"
ShuXiang(11)="
猪"
农历日期名
DayName(0)="
*"
DayName
(1)="
初一"
DayName
(2)="
初二"
DayName(3)="
初三"
DayName(4)="
初四"
DayName(5)="
初五"
DayName(6)="
初六"
DayName(7)="
初七"
DayName(8)="
初八"
DayName(9)="
初九"
DayName(10)="
初十"
DayName(11)="
十一"
DayName(12)="
十二"
DayName(13)="
十三"
DayName(14)="
十四"
DayName(15)="
十五"
DayName(16)="
十六"
DayName(17)="
十七"
DayName(18)="
十八"
DayName(19)="
十九"
DayName(20)="
二十"
DayName(21)="
廿一"
DayName(22)="
廿二"
DayName(23)="
廿三"
DayName(24)="
廿四"
DayName(25)="
廿五"
DayName(26)="
廿六"
DayName(27)="
廿七"
DayName(28)="
廿八"
DayName(29)="
廿九"
DayName(30)="
三十"
农历月份名
MonName(0)="
MonName
(1)="
正"
MonName
(2)="
二"
MonName(3)="
三"
MonName(4)="
四"
MonName(5)="
五"
MonName(6)="
六"
MonName(7)="
七"
MonName(8)="
八"
MonName(9)="
九"
MonName(10)="
十"
MonName(11)="
MonName(12)="
腊"
公历每月前面的天数
MonthAdd(0)=0
MonthAdd
(1)=31
MonthAdd
(2)=59
MonthAdd(3)=90
MonthAdd(4)=120
MonthAdd(5)=151
MonthAdd(6)=181
MonthAdd(7)=212
MonthAdd(8)=243
MonthAdd(9)=273
MonthAdd(10)=304
MonthAdd(11)=334
农历数据
NongliData(0)=2635
NongliData
(1)=333387
NongliData
(2)=1701
NongliData(3)=1748
NongliData(4)=267701
NongliData(5)=694
NongliData(6)=2391
NongliData(7)=133423
NongliData(8)=1175
NongliData(9)=396438
NongliData(10)=3402
NongliData(11)=3749
NongliData(12)=331177
NongliData(13)=1453
NongliData(14)=694
NongliData(15)=201326
NongliData(16)=2350
NongliData(17)=465197
NongliData(18)=3221
NongliData(19)=3402
NongliData(20)=400202
NongliData(21)=2901
NongliData(22)=1386
NongliData(23)=267611
NongliData(24)=605
NongliData(25)=2349
NongliData(26)=137515
NongliData(27)=2709
NongliData(28)=464533
NongliData(29)=1738
NongliData(30)=2901
NongliData(31)=330421
NongliData(32)=1242
NongliData(33)=2651
NongliData(34)=199255
NongliData(35)=1323
NongliData(36)=529706
NongliData(37)=3733
NongliData(38)=1706
NongliData(39)=398762
NongliData(40)=2741
NongliData(41)=1206
NongliData(42)=267438
NongliData(43)=2647
NongliData(44)=1318
NongliData(45)=204070
NongliData(46)=3477
NongliData(47)=461653
NongliData(48)=1386
NongliData(49)=2413
NongliData(50)=330077
NongliData(51)=1197
NongliData(52)=2637
NongliData(53)=268877
NongliData(54)=3365
NongliData(55)=531109
NongliData(56)=2900
NongliData(57)=2922
NongliData(58)=398042
NongliData(59)=2395
NongliData(60)=1179
NongliData(61)=267415
NongliData(62)=2635
NongliData(63)=661067
NongliData(64)=1701
NongliData(65)=1748
NongliData(66)=398772
NongliData(67)=2742
NongliData(68)=2391
NongliData(69)=330031
NongliData(70)=1175
NongliData(71)=1611
NongliData(72)=200010
NongliData(73)=3749
NongliData(74)=527717
NongliData(75)=1452
NongliData(76)=2742
NongliData(77)=332397
NongliData(78)=2350
NongliData(79)=3222
NongliData(80)=268949
NongliData(81)=3402
NongliData(82)=3493
NongliData(83)=133973
NongliData(84)=1386
NongliData(85)=464219
NongliData(86)=605
NongliData(87)=2349
NongliData(88)=334123
NongliData(89)=2709
NongliData(90)=2890
NongliData(91)=267946
NongliData(92)=2773
NongliData(93)=592565
NongliData(94)=1210
NongliData(95)=2651
NongliData(96)=395863
NongliData(97)=1323
NongliData(98)=2707
NongliData(99)=265877
生成当前公历年、月、日==>
GongliStr
curYear=Year(curTime)
curMonth=Month(curTime)
curDay=Day(curTime)
GongliStr=curYear&
"
If(curMonth<
10)Then
GongliStr=GongliStr&
0"
&
curMonth&
月"
Else
EndIf
If(curDay<
curDay&
日"
计算到初始时间1921年2月8日的天数:
1921-2-8(正月初一)
TheDate=(curYear-1921)*365+Int((curYear-1921)/4)+curDay+MonthAdd(curMonth-1)-38
If((curYearMod4)=0AndcurMonth>
2)Then
TheDate=TheDate+1
计算农历天干、地支、月、日
isEnd=0
m=0
Do
If(NongliData(m)<
4095)Then
k=11
Else
k=12
EndIf
n=k
Do
If(n<
0)Then
ExitDo
'
获取NongliData(m)的第n个二进制位的值
bit=NongliData(m)
Fori=1TonStep1
bit=Int(bit/2)
Next
bit=bitMod2
If(TheDate<
=29+bit)Then
isEnd=1