夏历转阳历怎样转
-
www.suanmianzhun.com
- 八字算命
- 2021-01-03 11:39
-
- 指迷居士
夏历不断是老苍生较为熟习的历法或者也叫阴历,而阳历是当代通用的历法,那末这两者之间有甚么关系呢,夏历转阳历有怎么转换呢?这里小编就为大家引见下终究夏历怎么转阳历!
要了解夏历转阳历怎样转,首先我们要先弄明白2个问题,那就是甚么是夏历;甚么是阳历,他们是以甚么为计算根据的!
夏历是我国采取的一种传统历法,别名农历、中历、旧历,官方也有称阴历的。它用严格的朔望周期来定月,又用设置闰月的方法使年的均匀长度与回归年附近,兼有阴历月和阳积年的性质,因而在本质上是一种阴阳合历。
夏历根据是月亮的活动纪律:月球运转的轨道,名曰白道,白道与黄道同为天体上之两大圆,以五度九分而斜交,月球绕地球一周,出没于黄道者两次,历二十七日七小时四十三分十一秒半,为月球公转一周所需的时间,谓之“恒星月”。唯当月球绕地球之时,地球因公转而地位亦有变化,计行进二十七度余,而月球逐日行十三度十五分,故月球自合朔,全绕地球一周,复至合朔,实需二十九日十二时四十四分二秒八,谓之“朔望月”,风俗所谓一个月,即指朔望月而言。
阳历也就是公历,它是国际通用的。阳历以地球绕太阳转一圈的时间定做一年,共365天5小时48分46秒。闰年只计365天这个整数,不计尾数;一年分做12个月,大月31天,小月30天,仲春只要28天。四年的尾数积聚起来共1天光景,加在第四年的仲春里,这一年叫做闰年。所以闰年的仲春有29天。
那末夏历转阳历怎样转呢?一般而言夏历转阳历都有Tools的,不必人工计算!
电脑转换Tools办法1:夏历转阳历Tools
人工公历转夏历办法2:
阳历日期推算阴历日期的办法:前已述及阴历日期是以月亮的圆缺为计月单元,其以逢朔为月朔,以月望为十五(大月为十六日),以月终为二十九日(大月为三旬日)。但是现在记时大部分用阳历日期表达,如欲将阳历日期换算成阴历日期可以用以下两种办法:其一是查《新编万年历》,如查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便是阴历二十七日。
蔡勒(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,即在蔡勒公式中,某年的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日,进程以下:
w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1
=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年。随著地理科学的提高,中国阴阳应当运用较准确的理法。以免儿女子孙再Waste时间会商置闰去留的问题。
阴阳使用在八字算命、紫微斗数、农人、遁甲最多。非常多人不晓得排八字天干地支只用阳而不必阴。发了很多时间在研讨阴阳的转换。实在八字只运用太阳中骨气,和月亮没有任何干系。紫微斗数则必须阴日期去排命盘。美国时区的阴日期有一半和中国时区的阴日期差一天,由于时差超越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("子丑寅卯辰巳午未申酉戌亥",MOD(TEXT(A1,"[$-130000]e")-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,"子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥")&TEXT(A1,"[dbnum1][$-130000]年m月"&IF(--TEXT(A1,"[$-130000]d")<11,"初","")&TEXT(A1,"[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)=
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
GongliStr=GongliStr&curMonth&"月"
EndIf
If(curDay<10)Then
GongliStr=GongliStr&"0"&curDay&"日"
Else
GongliStr=GongliStr&curDay&"日"
EndIf
'计算到初始时间1921年2月8日的天数:1921-2-8(正月月朔)
TheDate=(curYear-1921)*365+Int((curYear-1921)/4)+curDay+MonthAdd(curMonth-1)-38
If((curYearMod4)=AndcurMonth>2)Then
TheDate=TheDate+1
EndIf
'计算夏历天干、地支、月、日
isEnd=
m=
Do
If(NongliData(m)<4095)Then
k=11
Else
k=12
EndIf
n=k
Do
If(n<0)Then
ExitDo
EndIf
'获得NongliData(m)的第n个二进制位的值
bit=NongliData(m)
Fori=1TonStep1
bit=Int(bit/2)
Next
bit=bitMod2
If(TheDate<=29+bit)Then
isEnd=1
ExitDo
EndIf
TheDate=TheDate-29-bit
n=n-1
Loop
If(isEnd=1)Then
ExitDo
EndIf
m=m+1
Loop
curYear=1921+m
curMonth=k-n+1
curDay=TheDate
If(k=12)Then
If(curMonth=(Int(NongliData(m)/65536)+1))Then
curMonth=1-curMonth
ElseIf(curMonth>(Int(NongliData(m)/65536)+1))Then
curMonth=curMonth-1
EndIf
EndIf
'生成夏历天干、地支、属相==>NongliStr
NongliStr="夏历"&TianGan(((curYear-4)Mod60)Mod10)&DiZhi(((curYear-4)Mod60)Mod12)&"年"
NongliStr=NongliStr&"("&ShuXiang(((curYear-4)Mod60)Mod12)&")"
'生成夏历月、日==>NongliDayStr
If(curMonth<1)Then
NongliDayStr="闰"&MonName(-1*curMonth)
Else
NongliDayStr=MonName(curMonth)
EndIf
NongliDayStr=NongliDayStr&"月"
NongliDayStr=NongliDayStr&DayName(curDay)
NongLi=NongliStr&NongliDayStr
EndFunction