儒略日与公历转换公式
儒略日的计算
儒略⽇的计算儒略⽇的计算现在的公历起源于埃及历,由古罗马的恺撒在公元前46年制定的,365⽇作为⼀年,单⽉为⼤⽉31天,双⽉为⼩⽉30天,4年⼀闰,称为"儒略历"或"恺撒历"。
1582年罗马教皇格⾥⾼利⼗三世(Gregorius XⅢ)对"儒略历"⼜进⾏修改,规定被4整除的年为闰年,但逢百之年只有能被400除尽才能是闰年。
这就是使⽤⾄今的"格⾥历"。
教皇于1582年10⽉ 4⽇还下令将次⽇(即原10⽉5⽇)定为10⽉15⽇,把春分⽇⼜恢复为3⽉21⽇。
儒略⽇(Julian day,JD)是由法国学者 Joseph Justus Scaliger(1540-1609)发明的,是天⽂学上不⽤⼀种不⽤年、⽉的长期纪⽇法,⽤它可以很⽅便地计算到两时? 涞慵湟蕴焓 屏康氖奔浼涓簟H迓匀找怨 ?713年儒略历1⽉1⽇格林威治平午为起算⽇期,以7980年为⼀个周期,每天顺数⽽下,流⽔计⽇。
儒略⽇的这种计算⽅法相当⽅便,获得了天⽂? 缒诘囊恢虏捎茫 翘煳募扑阒凶钗 匾 募扑慊 肌?例如:JD=245 191 9.34230,它意味着距儒略周期的开始已经逝去了2451919天。
⽽⼩数点后的".34230"代表这天的时间("15:12:54 EST"),在天体位置计算中是最具信息量的数据。
再⽐如世界时公元2009年3⽉1号的儒略⽇是2454891.8333333335天。
注意,"儒略⽇(julian Day)" 与"儒略历(Julian Calendar)"指的不是同⼀概念。
由于儒略⽇的表达数值太长,需要7位数字表⽰天数,因此,后来⼜出现了⼀种约化儒略⽇(Modified Julian Day,MJD)的记法,MJD = JD - 2,400,000.5,即约化儒略⽇的起算点在1858年11⽉16⽇平午。
阴历阳历转换计算公式
1、阳历日期推算阴历日期的方法:前已述及阴历日期是以月亮的圆缺为计月单位,其以逢朔为初一,以月望为十五(大月为十六日),以月晦为二十九日(大月为三十日)。
如要知道1984年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即是阴历二十七日2.公历换算为农历二十四节气在黄道上的位置是固定的,但各年有平年和闰年之分,就使得回归年天数与实际天数不等,每年在日历上可差一天。
这样可以将阴历经过任意整回归年在现在的日历上查到阳历(阳历一年相当阴历的月数为365.2422/29.530588=12.36827个月)。
例如,可先在1995年的日历上查得与(该年)阴历对应的阳历日期,这样就找到了临时落脚点,也就是找到了阴阳互换的关键。
例如,可先以阴历四月初一(日)为引数,在1995年日历上查到对应的阳历为4月30日。
由于已经计算出经过的月数,将经过的月数的尾数(小数)化为日,加在4月30日上,就得到经过(1995-1070)整年数的阳历日期,也就是起始阴历日期对应的阳历日期,即得到了待查的日期为4月30日加上0.64957×29.530588得到(1070年)5月19.1821840日。
这样就得到了所给例子的阴阳历日期换算结果……”。
0.64957月的由来,(1995-1070)×12.36827=11440.64957月已知依泽公生于梁龙德二年(922)六月二十一日,依下表提供的2099年各月初一日的公历月日数,可以算出龙德二年六月二十一日的公历月日数公元2099年农历各月初一日的公历月日(2099-922)×12.36827=1455.45379月余数为0.45379月×29.530588日=13.4O日因2099年五月初一日(包括该年闯二月)在公历6月19日,加上计算所得的13日为龙德二年六月初一日的公历月日,即该年7月2日,则该年农历六月二十一日为该年7月22日。
儒略日Juliandate计算matlab
儒略日 Juliandate 计算 matlab 儒略日 Juliandate 计算 matlabthanksto:在天文学有一种连续纪日的儒略日(JD),它以儒略历公元前4713年1月1日的GMT正午为第0日的开始。
还有一种简化儒略日(MJD):MJD=JD-2400000.5MJD的第0日是从公历1858年11月17日的GMT零时开始的。
需要注意:儒略历公元前4713年1月1日相当于公历公元前4713年11月24日。
儒略日(Julianday)是指由公元前4713年1月1日,协调世界时中午12时开始所经过的天数,多为天文学家采用,用以作为天文学的单一历法,把不同历法的年表统一起来。
儒略日是一种不用年月的长期纪日法,简写为JD。
是由法国学者JosephJustusScliger(1540-1609)在1583年所创,这名称是为了纪念他的父亲--意大利学者JuliusCaesarScaliger(1484-1558)。
儒略日的起点订在公元前4713年(天文学上记为-4712年)1月1日格林威治时间平午(世界时12:00),即JD0指定为4713B.C.1月1日12:00UT到4713B.C.1月2日12:00UT的24小时。
每一天赋予了一个唯一的数字,顺数而下,如:1996年1月1日12:00:00的儒略日是2450084。
这个日期是考虑了太阳、月亮的运行周期,以及当时收税的间隔而订出来的。
JosephScliger定义儒略周期为7980年,是因28、19、15的最小公倍数为28×19×15=7980。
其中:28年为一太阳周期(solarcycle),经过一太阳周期,则星期的日序与月的日序会重复。
19年为一太阴周期,或称默冬章(Metoniccycle),因235朔望月=19回归年,经过一太阴周期则阴历月年的日序重复。
15年为一小纪(indictioncycle),此为罗马皇帝君士坦丁(Constantine) 所颁,每15年评定财产价值以供课税,成为古罗马用的一个纪元单位,故以7980年为一儒略周期,而所选的起点公元前4713年,则是这三个循环周期同时开始的最近年份。
【高中数学】两种纪年的换算和星期数的求法
【高中数学】两种纪年的换算和星期数的求法现在,人们只要查看万年历,就可以知道某一年的公农历两种纪年的结果,还可以知道某日是星期几。
例如,1949年是己丑年,该年的10月1日是星期六;张之洞卒于1909年,这一年是己酉年(宣统元年)。
然而,万年历并不容易获得。
你知道上面的问题吗?剩下的你能问一下吗?答案是肯定的。
一、公历纪年与农历纪年的换算现在,世界上普遍使用公历,也称为公历。
在中国,它也被称为公历(在古代中国,太阳被视为阳,月亮被视为阴)。
根据太阳绕地球运行365天和1/4天的时间,经过长期的不断改进和演变,教宗格雷戈里十三世终于在原凯撒历的基础上于1582年10月15日颁布实施。
1752年9月14日起,英国及其殖民地国家开始实施。
与公历同排在我国日历上的农历,是我们国家所特有的一种“干支纪年历”,又叫阴历。
它是把一个朔望月,也就是相邻两次朔月(或望月即满月)的时间间隔二十九点五三零六天,作为一个农历月,采用十“天干”与十二“地支”搭配成60年一循环的周期性“干支纪年历”。
为了便于理解和运用,我们给出天干地支搭配表如下:1甲子2乙丑3丙寅4丁卯5戊辰6己巳78辛未9壬申10癸酉11甲戌12乙亥13丙子14丁丑15戊寅16己卯17庚辰18辛巳19壬午癸未21甲申22乙酉23丙戌24丁亥25戊子26己丑27庚寅28辛卯29壬辰30癸巳31甲午3233丙申34丁酉35戊戌36己亥37庚子38辛丑39壬寅40癸卯41甲辰42乙巳43丙午44丁未戊申46己酉47庚戌48辛亥49壬子50癸丑51甲寅52乙卯53丙辰54丁巳55戊午56己未5758辛酉59壬戌60癸亥根据上表的顺序,每年使用一对干枝。
这个年表叫做“干支年表”。
根据古代文献记载,干支年表最晚在东汉初被广泛使用,至今仍在使用干支纪年在我国历史学中广泛使用,很多历史事件的年代常用它来表示.例如,甲午战争、戊戌变法、辛亥革命等等.在“分支机构列表”和历史知识的帮助下,可以通过公式x=n+3+60m转换日历年和分支机构年(如果你不记得,你需要自己安排)。
阴历阳历转换计算公式
1、阳历日期推算阴历日期的方法:前已述及阴历日期是以月亮的圆缺为计月单位,其以逢朔为初一,以月望为十五(大月为十六日),以月晦为二十九日(大月为三十日)。
如要知道1984年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即是阴历二十七日2.公历换算为农历二十四节气在黄道上的位置是固定的,但各年有平年和闰年之分,就使得回归年天数与实际天数不等,每年在日历上可差一天。
这样可以将阴历经过任意整回归年在现在的日历上查到阳历(阳历一年相当阴历的月数为365.2422/29.530588=12.36827个月)。
例如,可先在1995年的日历上查得与(该年)阴历对应的阳历日期,这样就找到了临时落脚点,也就是找到了阴阳互换的关键。
例如,可先以阴历四月初一(日)为引数,在1995年日历上查到对应的阳历为4月30日。
由于已经计算出经过的月数,将经过的月数的尾数(小数)化为日,加在4月30日上,就得到经过(1995-1070)整年数的阳历日期,也就是起始阴历日期对应的阳历日期,即得到了待查的日期为4月30日加上0.64957×29.530588得到(1070年)5月19.1821840日。
这样就得到了所给例子的阴阳历日期换算结果……”。
0.64957月的由来,(1995-1070)×12.36827=11440.64957月已知依泽公生于梁龙德二年(922)六月二十一日,依下表提供的2099年各月初一日的公历月日数,可以算出龙德二年六月二十一日的公历月日数公元2099年农历各月初一日的公历月日(2099-922)×12.36827=1455.45379月余数为0.45379月×29.530588日=13.4O日因2099年五月初一日(包括该年闯二月)在公历6月19日,加上计算所得的13日为龙德二年六月初一日的公历月日,即该年7月2日,则该年农历六月二十一日为该年7月22日。
儒略日与公历转换公式
儒略日与公历转换公式儒略日和公历是两种不同的时间计量方式,它们在历史上都曾被广泛使用。
儒略日是一种连续计数的时间系统,起始日为公元前4713年1月1日,而公历是一种以天、月和年为单位的时间系统。
在进行日期转换时,我们可以使用一些公式来帮助我们准确地将儒略日转换为公历或将公历转换为儒略日。
1. 儒略日转换为公历要将儒略日转换为公历日期,我们可以使用以下公式:L = JD + 68569N = 4 * L / 146097L = L - (146097 * N + 3) / 4I = 4000 * (L + 1) / 1461001L = L - 1461 * I / 4 + 31J = 80 * L / 2447D = L - 2447 * J / 80L = J / 11M = J + 2 - 12 * LY = 100 * (N - 49) + I + L其中,JD表示儒略日,Y表示公历的年份,M表示月份,D表示日期。
2. 公历转换为儒略日要将公历日期转换为儒略日,我们可以使用以下公式:Y = 公历年份M = 公历月份D = 公历日期如果M为1或2月,Y需要减去1,M需要加上12。
A = Y / 100B = A / 4C = 2 - A + BE = 365.25 * (Y + 4716)F = 30.6001 * (M + 1)JD = C + D + E + F - 1524.5其中,JD表示儒略日。
通过使用上述公式,我们可以将儒略日和公历之间进行精确的转换。
这些公式基于历史上对时间的精确测量和计算。
儒略日和公历的转换对于天文学家、历史学家和其他需要处理日期的人们来说都非常重要。
它们可以帮助我们在不同的时间系统之间进行准确的转换,以满足不同领域的需求。
总结起来,儒略日与公历转换公式是一种重要的工具,可以帮助我们在儒略日和公历之间进行准确的日期转换。
通过这些公式,我们可以方便地将儒略日转换为公历日期,或者将公历日期转换为儒略日,满足不同领域对时间计量的需求。
回历、公历、农历的换算
回历、公历、农历的换算2002-2-10 22:02:19 马肇曾阅读9061次研究世界伊斯兰教历史,免不了要对以回历所记载的历史事实换算为公历,或将所载的公历换算为回历。
《回历纲要》、《历法丛谈》、《万年历谱》以及《回回天文学史研究》[1--4]等专著都载有自回历换算为公历的算式,并称两历因闰年的时间不同,故换算结果常有一日之差,惟均未讨论一日之差的简易订正方法。
1998年《北京大学学报》(自然科学版)载文讨论了中国农历与公历、回历的换算问题[5]。
惟笔者依上列著作中所列算式推算结果;发现与实际所载日期误差常大于一日,最高可达十日之多。
因此有必要对计算中误差的来源及计算公式的改进进行探讨,特撰此文。
二、国历换算为公历1.换算公式的导出公历每年365.242 199074075 日(简化为365.2422日),而回历每年为354.367074375日(简化为354.36707日),所以回历一年只相当354.36707/365.2422=0.970223或0.970224个公历年。
又回历元年元旦定在公元622年7月16日,由于当时历法在推算上的误差,致当时的7月16日,按现代的公历应改为7月19日,自公元某年元旦至该年7月19日已达200日.相200/365.2422=0.5476公历年;又因到回历二年元旦才达到0.970224个公历年,故自回历纪年元旦换算为公历的算式即为:(回历纪年一1)× 0.970224+622.5476年=所求公历年月日 (1)或回历纪年× 0.970224+621.5774年=所求公历年月日 (2)式中621.5774来自622.5476-0.970224。
如所求某一历史事实不在回历元旦时,可将事实经过本年的总日数化为回历年,加人回历纪年总数中即可。
然而上列公历一年的总日数,实际上是一回归年的实测数,因现用公历每年的日数实为365.2425日,它与一回归年的日数只能是基本相符,到公元四千多年后会再出现一日之差。
儒略日、公历年月日之间的转换以及儒略日的应用电子教案
一、作业要求编写程序实现以下任务:1.1由公历年月日化为儒略日1.2由儒略日转化为公历年月日1.3儒略日的应用1.3.1 计算两个日期间的间隔天数1.3.2 计算星期几1.3.3 计算年积日(DOY)1.3.4 由年积日计算年月日二、程序设计2.1 窗体设计2.2 代码实现2.2.1由公历年月日化为儒略日//由公历年月日转化为儒略日的函数public double GLToJD(double Y, double M, double D){double JDtime;JDtime = 367 * Y - Math.Truncate(7 * (Y + Math.Truncate((M + 9) / 12)) / 4) + Math.Truncate(275 * M / 9) + D + 1721013.5;return JDtime;}2.2.2由儒略日转化为公历年月日//由儒略日转化为公历年月日的函数public void JDToGL(double JDtime,out double Y,out double M,out double D){double a, b, c, d, e;a = Math.Truncate(JDtime + 0.5);b = a + 1537;c = Math.Truncate((b - 122.1) / 365.25);d = Math.Truncate(365.25 * c);e = Math.Truncate((b-d)/30.6001);D=b-d-Math.Truncate (30.6001*e)+JDtime+0.5- Convert.ToInt32(JDtime+0.5);M = e - 1 - Math.Truncate(e / 14) * 12;Y = c - 4715 - Math.Truncate((7 + M) / 10);}2.2.3 计算两个日期间的间隔天数private void JGTSbutton_Click(object sender, EventArgs e){double JDtime1, JDtime2,Y1,M1,D1,Y2,M2,D2,JGTS;if (Year31.Text == "" || Month31.Text == "" || Day31.Text == "" || Year31.Text == "" || Month31.Text == "" || Day31.Text == ""){MessageBox.Show("输入的日期不能为空!");}else{Y1 = double.Parse(Year31.Text);M1 = double.Parse(Month31.Text);D1 = double.Parse(Day31.Text);JDtime1 = GLToJD(Y1, M1, D1);Y2 = double.Parse(Year32.Text);M2 = double.Parse(Month32.Text);D2 = double.Parse(Day32.Text);JDtime2 = GLToJD(Y2, M2, D2);JGTS = Math.Abs(JDtime2 - JDtime1);JG.Text = JGTS.ToString();}}2.2.4 计算星期几private void XQbutton_Click(object sender, EventArgs e){double JDtime,Y,M,D, XQ;if (Year4.Text == "" || Month4.Text == "" || Day4.Text == "") {MessageBox.Show("输入的日期不能为空!");}else{Y = double.Parse(Year4.Text);M = double.Parse(Month4.Text);D = double.Parse(Day4.Text);JDtime = GLToJD(Y, M, D);XQ = (JDtime + 1.5) % 7;if (XQ == 0){weekDay.Text = "星期日";}if (XQ == 1){weekDay.Text = "星期一";}if (XQ == 2){weekDay.Text = "星期二";}if (XQ == 3){weekDay.Text = "星期三";}if (XQ == 4){weekDay.Text = "星期四";}if (XQ == 5){weekDay.Text = "星期五";}if (XQ == 6){weekDay.Text = "星期六";}}}2.2.5 计算年积日private void NJRbutton_Click(object sender, EventArgs e){double Y,M,D,JDtime1,JDtime2;if (Year5.Text == "" || Month5.Text == "" || Day5.Text == "") {MessageBox.Show("输入的日期不能为空!");}else{Y = double.Parse(Year5.Text);M = double.Parse(Month5.Text);D = double.Parse(Day5.Text);JDtime1 = GLToJD(Y,M-1,D);JDtime2 = GLToJD(Y,0,0 );NJR1.Text = (JDtime1-JDtime2).ToString();}}2.2.6 由年积日计算年月日private void NJRTONYRbutton_Click(object sender, EventArgs e){double JDtime, Y1, Y, M, D,NJR;if (Year6.Text == "" || NJR2.Text == "" ){MessageBox.Show("输入的日期不能为空!");}else{NJR = double.Parse(NJR2.Text);Y1 = double.Parse(Year6.Text);JDtime = GLToJD(Y1, 0, 0) + NJR+30;JDToGL(JDtime ,out Y,out M,out D);textBox1.Text = JDtime.ToString ();GLNYR.Text = Y.ToString() + "年" + M.ToString() + "月" + D.ToString() + "日"; }}2.3 运行结果。
阴历阳历转换计算公式
1、阳历日期推算阴历日期的方法:前已述及阴历日期是以月亮的圆缺为计月单位,其以逢朔为初一,以月望为十五(大月为十六日),以月晦为二十九日(大月为三十日)。
如要知道1984年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即是阴历二十七日2.公历换算为农历二十四节气在黄道上的位置是固定的,但各年有平年和闰年之分,就使得回归年天数与实际天数不等,每年在日历上可差一天。
这样可以将阴历经过任意整回归年在现在的日历上查到阳历(阳历一年相当阴历的月数为365.2422/29.530588=12.36827个月)。
例如,可先在1995年的日历上查得与(该年)阴历对应的阳历日期,这样就找到了临时落脚点,也就是找到了阴阳互换的关键。
例如,可先以阴历四月初一(日)为引数,在1995年日历上查到对应的阳历为4月30日。
由于已经计算出经过的月数,将经过的月数的尾数(小数)化为日,加在4月30日上,就得到经过(1995-1070)整年数的阳历日期,也就是起始阴历日期对应的阳历日期,即得到了待查的日期为4月30日加上0.64957×29.530588得到(1070年)5月19.1821840日。
这样就得到了所给例子的阴阳历日期换算结果……”。
0.64957月的由来,(1995-1070)×12.36827=11440.64957月已知依泽公生于梁龙德二年(922)六月二十一日,依下表提供的2099年各月初一日的公历月日数,可以算出龙德二年六月二十一日的公历月日数公元2099年农历各月初一日的公历月日(2099-922)×12.36827=1455.45379月余数为0.45379月×29.530588日=13.4O日因2099年五月初一日(包括该年闯二月)在公历6月19日,加上计算所得的13日为龙德二年六月初一日的公历月日,即该年7月2日,则该年农历六月二十一日为该年7月22日。
时间转换--年积日-儒略日-GPS周
4. mjd2cal 将简化儒略日转换到公历时间
function cal=mjd2cal(mjd) % mjd2cal 将简化儒略日转换到公历年月日时分秒。 % cal=mjd2cal(mjd) 返回的 cal 是 1x6 矩阵,6 列分别为年月日时分秒 % mjd:简化儒略日 jd=mjd+2400000.5; cal=jd2cal(jd);
2. gps2cal1 由公历日期和 GPS 周内秒计算公历时间
function cal=gps2cal1(date,tow) % gps2cal1 由公历日期和 gps 周内秒计算公历 GPS 时间 % cal=gps2cal1(date,tow) 返回的公历是 1x6 矩阵,6 列分别为年月日时分秒 % date:1x3 矩阵,3 列分别为公历年月日 % tow:GPS 周内秒 mjd=cal2mjd(date); % GPS 从 MJD44244 开始 week=floor((mjd-44244)/7); cal=gps2cal([week,tow]);
end if themonth>=3 juliaday=juliaday+1; end end mjd(1)=theyear; mjd(2)=juliaday; 日
%当月份大于 2 月时,在平年的ulian
6. jd2cal 从儒略日计算公历时间
else leap=1; end end %%%%%%采用平年的日历,按 1-12 月分月计算 julian 日期 if themonth==1 juliaday=theday; end if themonth==2 juliaday=theday+31; end if themonth==3 juliaday=theday+59; end if themonth==4 juliaday=theday+90; end if themonth==5 juliaday=theday+120; end if themonth==6 juliaday=theday+151; end if themonth==7 juliaday=theday+181; end if themonth==8 juliaday=theday+212; end if themonth==9 juliaday=theday+243; end if themonth==10 juliaday=theday+273; end if themonth==11 juliaday=theday+304; end if themonth==12 juliaday=theday+334; end if leap==1 if themonth<=2 %如果是闰年,当月份小于 2 月时,julian 日期与平年相同 juliaday=juliaday; %其他情况是闰年
excel中农历国历的相互转换方法及代码
打开相应的excel表格,按Alt+F11打开VBA编辑器,点击插入—插入模块,将下面代码粘贴上去,点击保存后关闭该窗口。
接着在相应单元格调用下面四个函数即可实现相应的功能了。
适用于1901-2100年间=lunar("2006-11-1") 求阳历2006-11-1日对应的阴历=solar("2006-1-1") 求阴历2006年正月初一对应的阳历=lunarbirth("1975-5-6") 阴历生日:阳历1975年5月6日出生,今年阴历生日时对应的阳历日期=solarbirth("1975-5-6") 阳历生日:阳历1975年5月6日出生,今年阳历生日时对应的阳历日期1.'阴阳历转换和阴阳历生日2.'Version: 1.1 2005-9-13.'Author: James Zhuang4.'Lunar(SolarDate[, Part = 0 | 1 | 2 | 3]) 阳历转换成阴历5.' Part = 0, all; Part = 1, lunar year; Part = 2, lunarmonth; Part = 3, lunar day6.'Solar(LunarDate[, LunarMonth = 0 | 1]) 阴历转换成阳历7.Type ConvDataA8. leapmonth As Integer9. month(1 To 13) As Integer10. sp_month As Integer 'Solar month of Spring Festival11. sp_day As Integer 'Solar day of Spring Festival12.End Type13.Private Function LunarData(q_year) As ConvDataA14. Dim d As Long15. Dim month(1 To 13) As Integer16.'1901-210017.LunarCal = Array(&H4AE53, &HA5748, &H5526BD, &HD2650, &HD9544, &H46AAB9, &H56A4D,&H9AD42, &H24AEB6, &H4AE4A, _18.&H6A4DBE, &HA4D52, &HD2546, &H5D52BA, &HB544E, &HD6A43, &H296D37, &H95B4B,&H749BC1, &H49754, _19.&HA4B48, &H5B25BC, &H6A550, &H6D445, &H4ADAB8, &H2B64D, &H95742, &H2497B7,&H4974A, &H664B3E, _20.&HD4A51, &HEA546, &H56D4BA, &H5AD4E, &H2B644, &H393738, &H92E4B, &H7C96BF,&HC9553, &HD4A48, _21.&H6DA53B, &HB554F, &H56A45, &H4AADB9, &H25D4D, &H92D42, &H2C95B6, &HA954A,&H7B4ABD, &H6CA51, _22.&HB5546, &H555ABB, &H4DA4E, &HA5B43, &H352BB8, &H52B4C, &H8A953F, &HE9552,&H6AA48, &H7AD53C, _23.&HAB54F, &H4B645, &H4A5739, &HA574D, &H52642, &H3E9335, &HD9549, &H75AABE,&H56A51, &H96D46, _24.&H54AEBB, &H4AD4F, &HA4D43, &H4D26B7, &HD254B, &H8D52BF, &HB5452, &HB6A47,&H696D3C, &H95B50, _25.&H49B45, &H4A4BB9, &HA4B4D, &HAB25C2, &H6A554, &H6D449, &H6ADA3D, &HAB651,&H93746, &H5497BB, _26.&H4974F, &H64B44, &H36A537, &HEA54A, &H86B2BF, &H5AC53, &HAB647, &H5936BC,&H92E50, &HC9645, _27.&H4D4AB8, &HD4A4C, &HDA541, &H25AA36, &H56A49, &H7AADBD, &H25D52, &H92D47,&H5C95BA, &HA954E, _28.&HB4A43, &H4B5537, &HAD54A, &H955ABF, &H4BA53, &HA5B48, &H652BBC, &H52B50,&HA9345, &H474AB9, _29.&H6AA4C, &HAD541, &H24DAB6, &H4B64A, &H69573D, &HA4E51, &HD2646, &H5E933A,&HD534D, &H5AA43, _30.&H36B537, &H96D4B, &HB4AEBF, &H4AD53, &HA4D48, &H6D25BC, &HD254F, &HD5244,&H5DAA38, &HB5A4C, _31.&H56D41, &H24ADB6, &H49B4A, &H7A4BBE, &HA4B51, &HAA546, &H5B52BA, &H6D24E,&HADA42, &H355B37, _32.&H9374B, &H8497C1, &H49753, &H64B48, &H66A53C, &HEA54F, &H6B244, &H4AB638,&HAAE4C, &H92E42, _33.&H3C9735, &HC9649, &H7D4ABD, &HD4A51, &HDA545, &H55AABA, &H56A4E, &HA6D43,&H452EB7, &H52D4B, _34.&H8A95BF, &HA9553, &HB4A47, &H6B553B, &HAD54F, &H55A45, &H4A5D38, &HA5B4C,&H52B42, &H3A93B6, _35.&H69349, &H7729BD, &H6AA51, &HAD546, &H54DABA, &H4B64E, &HA5743, &H452738,&HD264A, &H8E933E, _36.&HD5252, &HDAA47, &H66B53B, &H56D4F, &H4AE45, &H4A4EB9, &HA4D4C, &HD1541,&H2D92B5, &HD5349)37.startyear = 190138.ng = LunarCal(q_year - startyear)39. d = &H10000040. LunarData.leapmonth = Int(ng / d)41. ng = ng Mod d42. d = &H8043. mdata = Int(ng / d)44. ng = ng Mod d45. d = &H2046. LunarData.sp_month = Int(ng / d)47. LunarData.sp_day = ng Mod d48. d = &H100049. i = 150. Do51. LunarData.month(i) = 29 + Int(mdata / d)52. mdata = mdata Mod d53. If d = 1 Then Exit Do54. d = d / 255. i = i + 156. Loop57. If LunarData.leapmonth = 0 Then LunarData.month(i) = 058.End Function59.Function lunar(Solar_date As Date, Optional Part As Integer = 0) As String60.'Part = 0, all; Part = 1, lunar year; Part = 2, lunar month; Part = 3, lunar day61.Dim a As ConvDataA62.l_year = Year(Solar_date)63.a = LunarData(l_year)64.sp_date = DateSerial(l_year, a.sp_month, a.sp_day)65.If sp_date > Solar_date Then66. l_year = l_year - 167. a = LunarData(l_year)68. sp_date = DateSerial(l_year, a.sp_month, a.sp_day)69.End If70.l_day = Solar_date - sp_date71.l_month = 172.IS_lunar_leapmonth = False73.y = a.month(l_month)74.Do While l_day >= y75. l_day = l_day - y76. If l_month = a.leapmonth Then IS_lunar_leapmonth = (Not IS_lunar_leapmonth)77. If IS_lunar_leapmonth Then78. y = a.month(13)79. Else80. l_month = l_month + 181. y = a.month(l_month)82. End If83.Loop84.l_day = l_day + 185.lunar = l_year & "-" & l_month & "-" & l_day86.If IS_lunar_leapmonth Then lunar = lunar & "-L"87.lunar = Choose(Part + 1, lunar, l_year, l_month, l_day)88.End Function89.Function solar(Lunar_date, Optional IS_lunar_leapmonth As Integer = 0) As String90.'IS_lunar_leapmonth = 0, No leap month; IS_lunar_leapmonth = 1, is leap month91.Dim a As ConvDataA92.Lunar_date = Split(Lunar_date, "-")93.s_year = Lunar_date(0)94.For Each C In Lunar_date95. If C = "L" Then IS_lunar_leapmonth = 196.Next97.a = LunarData(s_year)98.sp_date = DateSerial(s_year, a.sp_month, a.sp_day)99.If Lunar_date(1) <> a.leapmonth Then IS_lunar_leapmonth = 0100.x = Lunar_date(2)101.tm = Lunar_date(1) + IS_lunar_leapmonth - 1102.For i = 1 To tm103. x = x + a.month(i)104. If i = a.leapmonth And IS_lunar_leapmonth = 0 Then105. x = x + a.month(13)106. End If107.Next108.s_date = sp_date + x - 1109.solar = s_date110.End Function111.Function lunarbirth(Solar_birthday As Date, Optional Inquire_year As Integer) As String112. If Inquire_year = 0 Then113. Inquire_year = Left(lunar(Now), 4)114. lunarbirth = solar(Inquire_year & Mid(lunar(Solar_birthday), 5, 10)) 115. If CDate(lunarbirth) < Now - 1 Then Inquire_year = Inquire_year + 1 116. End If117. lunarbirth = solar(Inquire_year & Mid(lunar(Solar_birthday), 5, 10)) 118.End Function119.Function solarbirth(Solar_birthday As Date, Optional Inquire_year As Integer) As String120. If Inquire_year = 0 Then121. Inquire_year = Year(Now)122. solarbirth = DateSerial(Inquire_year, month(Solar_birthday), Day(Solar_birthday))123. If CDate(solarbirth) < Now - 1 Then Inquire_year = Inquire_year + 1 124. End If125. solarbirth = DateSerial(Inquire_year, month(Solar_birthday), Day(Solar_birthday))126.End Function。
怎样在儒略历和公历之间进行转换
--
嗨,懂历算吗?
因为新历法的岁首比旧历提前了两个月(即以旧历11月1日为新历元旦),但是月份名称
仍然使用旧历的名称,所以现在公历9-12月的英文月份名分别是September, October,
November, December,而sept-, octo-, nov-和dec-本来是拉丁文里表示“七、八、九、
但星期保持连续。同时,为了避免以后再发生这种误差,改进了置闰规则,即年份能被
4整除的是闰年,但对于末尾是00的年份,必须被400整除才不是闰年。这样一来,新历
法一回归年的长度变为365.2425天,和实际值已经很接近,每三千多年才会差一天。这
种新历法就是现在我们仍在使用的公历,也称格里高利历。
时间内,两历的日期是相同的。再往前,儒略历的日期反而比公历要靠后了。这样就有:
Δd = C - [(C-1)/4] - 3. (1)
Δd是公历日期在儒略历日期之后的天数,C在大部分情况下是世纪数,[...]表示只取整
发信人: qLmhBVzWrESk (qLmhBVzWrESk), 信区: Astronomy
标 题: 怎样在儒略历和公历之间进行转换
发信站: BBS 水木清华站 (Fri May 7 10:36:18 2004), 站内
怎样在儒略历和公历之间进行转换
文/葛民勤
前面两篇文章,分别介绍了公历日期到星期和年日干支的转换公式。但是这只对于
或
z = g + 4C + 10 + i(奇数月i=0,偶数月i=6) ห้องสมุดไป่ตู้ (5)
和相应的适用于公历日期的计算星期和日干支的公式相比,区别仅在于和世纪数减一有关
公历和儒略日
图 1 圭表,造于明代(1439 年)
做世界时,简记为 UT1。天空中太阳相对于地面上南北子午圈的位置依赖于当地的地理经 度,时间的度量因而也与地理经度有关,不同地理经度的观测地有不同的时间,这就是地方 时。为了统一,规定世界时为本初子午线或零经度线上的地方时,这条经线经过英国伦敦的 格林尼治天文台,因此也叫做格林尼治时间。 比太阳的视运动简单一点的是遥远恒星每 天一次经过南北子午圈的视运动,它只是地球绕 轴自转一种运动的反映,与之相联系的概念是 “恒星日” 。恒星日虽然单纯,却远离生活,因 而没有成为计时的基础。随着观测技术的发展和 观测精度的提高,到了 20 世纪,人们终于发现, 无论是地球的自转还是公转,都是不均匀的,都 不宜用作精密计时的尺度。从 1967 年开始,改 用原子振动的周期作为计时的尺度,规定铯原子 基态的两个超精细能级在零磁场下跃迁辐射振 荡 9,192,631,770 周所持续的时间为一个国际制 秒。时间计量从此与地球的运动脱钩,这样的时 间尺度叫做原子时,简记为 TAI。根据爱因斯坦 的广义相对论,时间的快慢与局部引力场有关。 在太阳系内,有两个处所是紧要的:一个是太阳 系质心,所有太阳系天体的运动都与它相联系; 一个是地球质心,包括地面观测者在内所有地球
第 1 讲 公历和儒略日
1. 时间的计量
时间计量是天文计算的第一个基础。时间概念的发生,源于人类生活生产的需要。白 昼和黑夜交替,月圆和月缺轮换,炎夏和寒冬往复,自然界中这些周期发生的现象与人类的 生存息息相关,很自然地成为计时的依据,抽象出日,月和年的概念。把这些基本元素组织 成一个协调实用的计时系统,就产生了历法。 南京东郊风景如画的紫金山第三峰上,座 落着著名的紫金山天文台。台区内陈列着一组 堪称国宝级文物的古代天文仪器。其中一台高 3.56 米的仪器,由一具平卧的圭和一具竖立的 表组成,叫做圭表(图 1) 。这是一种起源可以 追溯到远古时代的计时仪器。它依南北子午线 方向水平安置,根据正午时刻落在圭尺上的表 的影子的长度测定时间。表影所反映的太阳在 天球上每天一次经过南北子午圈的视运动,是 “太阳日”概念的来源。地球上每个人时时都 最直接地感受着这个天象。实际上它并不象我 们直观看到的那样单纯,而是稍许有点复杂, 它是地球绕轴自转和绕太阳公转两个运动合成 的反映。以太阳日为基本单位的计时系统,叫
儒略日、公历年月日之间的转换以及儒略日的应用
一、作业要求编写程序实现以下任务:1.1由公历年月日化为儒略日1.2由儒略日转化为公历年月日1.3儒略日的应用1.3.1计算两个日期间的间隔天数1.3.2计算星期几1.3.3计算年积日(DOY)1.3.4由年积日计算年月日二、程序设计2.1 窗体设计2.2 代码实现2.2.1由公历年月日化为儒略日//由公历年月日转化为儒略日的函数publicdouble GLToJD(double Y, double M, double D){double JDtime;JDtime = 367 * Y - Math.Truncate(7 * (Y + Math.Truncate((M + 9) / 12)) / 4) + Math.Truncate(275 * M / 9) + D + 1721013.5;return JDtime;}2.2.2由儒略日转化为公历年月日//由儒略日转化为公历年月日的函数publicvoid JDToGL(double JDtime,outdouble Y,outdouble M,outdouble D){double a, b, c, d, e;a = Math.Truncate(JDtime + 0.5);b = a + 1537;c = Math.Truncate((b - 122.1) / 365.25);d = Math.Truncate(365.25 * c);e = Math.Truncate((b-d)/30.6001);D=b-d-Math.Truncate (30.6001*e)+JDtime+0.5- Convert.ToInt32(JDtime+0.5);M = e - 1 - Math.Truncate(e / 14) * 12;Y = c - 4715 - Math.Truncate((7 + M) / 10);}2.2.3 计算两个日期间的间隔天数privatevoid JGTSbutton_Click(object sender, EventArgs e){double JDtime1, JDtime2,Y1,M1,D1,Y2,M2,D2,JGTS;if (Year31.Text == "" || Month31.Text == "" || Day31.Text == "" || Year31.Text == "" || Month31.Text == "" || Day31.Text == ""){MessageBox.Show("输入的日期不能为空!");}else{Y1 = double.Parse(Year31.Text);M1 = double.Parse(Month31.Text);D1 = double.Parse(Day31.Text);JDtime1 = GLToJD(Y1, M1, D1);Y2 = double.Parse(Year32.Text);M2 = double.Parse(Month32.Text);D2 = double.Parse(Day32.Text);JDtime2 = GLToJD(Y2, M2, D2);JGTS = Math.Abs(JDtime2 - JDtime1);JG.Text = JGTS.ToString();}}2.2.4 计算星期几privatevoid XQbutton_Click(object sender, EventArgs e) {double JDtime,Y,M,D, XQ;if (Year4.Text == "" || Month4.Text == "" || Day4.Text == "") {MessageBox.Show("输入的日期不能为空!");}else{Y = double.Parse(Year4.Text);M = double.Parse(Month4.Text);D = double.Parse(Day4.Text);JDtime = GLToJD(Y, M, D);XQ = (JDtime + 1.5) % 7;if (XQ == 0){weekDay.Text = "星期日";}if (XQ == 1){weekDay.Text = "星期一";}if (XQ == 2){weekDay.Text = "星期二";}if (XQ == 3){weekDay.Text = "星期三";}if (XQ == 4){weekDay.Text = "星期四";}if (XQ == 5){weekDay.Text = "星期五";}if (XQ == 6){weekDay.Text = "星期六";}}}2.2.5 计算年积日privatevoid NJRbutton_Click(object sender, EventArgs e){double Y,M,D,JDtime1,JDtime2;if (Year5.Text == "" || Month5.Text == "" || Day5.Text == ""){MessageBox.Show("输入的日期不能为空!");}else{Y = double.Parse(Year5.Text);M = double.Parse(Month5.Text);D = double.Parse(Day5.Text);JDtime1 = GLToJD(Y,M-1,D);JDtime2 = GLToJD(Y,0,0 );NJR1.Text = (JDtime1-JDtime2).ToString();}}2.2.6 由年积日计算年月日privatevoid NJRTONYRbutton_Click(object sender, EventArgs e) {double JDtime, Y1, Y, M, D,NJR;if (Year6.Text == "" || NJR2.Text == "" ){MessageBox.Show("输入的日期不能为空!");}else{NJR = double.Parse(NJR2.Text);Y1 = double.Parse(Year6.Text);JDtime = GLToJD(Y1, 0, 0) + NJR+30;JDToGL(JDtime ,out Y,out M,out D);textBox1.Text = JDtime.ToString ();GLNYR.Text = Y.ToString() + "年" + M.ToString() + "月" + D.ToString() + "日"; }}2.3 运行结果。
通用的日期格式与儒略日(julian day)格式的互相转换
通用的日期格式与儒略日(julian day)格式的互相转换李文军中国地震局地震预测研究所北京100036 liwj@ 儒略日(Julian day)是指由公元前4713年1月1日,协调世界时中午12时开始所经过的天数,多为天文学家采用,用以作为天文学的单一历法,把不同历法的年表统一起来。
儒略日是一种不用年月的长期纪日法,简写为JD。
是由法国纪年学家史迦利日(Joseph Justus Scliger 1540年-1609年)在1583年所创,这名称是为了纪念他的父亲——意大利学者Julius Caesar Scaliger(1484年-1558年)。
以儒略日计日是为方便计算年代相隔久远或不同历法的两事件所间隔的日数。
为简化起见,在地震学中用到的Julian 日期有时用来指这样的日期格式,即当前年份和当天位于这一年的第几天的结合。
例如,2006 年1 月 1 日表示为2006001,而2008 年12 月31 日表示为2008366。
因此,该格式并不等同于Julian 日历计算的日期,但是,可以极大地方便我们在地震学中的数据处理,在许多地震学数据格式中都用这种简化儒略日表示日期,如sac、seed、miniseed等格式。
而在撰写论文的图件中我们又希望恢复成普通的日期格式,因而通用格式和简化儒略日之间的转换是一个经常要做的事以下有两个程序,第一个是matlab编写的普通通用日期转换为上述简化儒略日(Julian day)的程序代码,第二个是同样用matlab编写的将儒略日转回普通日期格式的代码:1、普通通用日期转换为简化儒略日(Julian day)的程序代码function y=julia(theyear,themonth,theday);%return the julian day (year,day)定义函数julia为转换为julian日期函数,变量y为返回的julian日期,输入变量为theyear/年,themonth/月,theday/日leapyear=rem(theyear,4); %年对4求余数if leapyear>0leap=0; %判断余数大于0,不能被4整除,则用leap标记这一年不是闰年(标记为0)elseif rem(theyear,100)==0 & rem(theyear,400)~=0leap=0; %能被4整除但是不能被400整除也不是闰年,则用leap标记这一年不是闰年elseleap=1; %其他情况是闰年endend%%%%%%采用平年的日历,按1-12月分月计算julian日期if themonth==1juliaday=theday;endif themonth==2juliaday=theday+31;endif themonth==3juliaday=theday+59;endif themonth==4juliaday=theday+90;endif themonth==5juliaday=theday+120;endif themonth==6juliaday=theday+151;endif themonth==7juliaday=theday+181;endif themonth==8juliaday=theday+212;endif themonth==9juliaday=theday+243;endif themonth==10juliaday=theday+273;endif themonth==11juliaday=theday+304;endif themonth==12juliaday=theday+334;endif leap==1if themonth<=2 %如果是闰年,当月份小于2月时,julian日期与平年相同juliaday=juliaday;endif themonth>=3juliaday=juliaday+1; %当月份大于2月时,在平年的基础上加一天endendy(1)=theyear;y(2)=juliaday; %返回的矢量y,第一个元素为年,第二个元素为Julian日将儒略日转回普通日期格式的代码与上述代码类似2、儒略日(Julian day)转为普通日期格式的程序代码:function y=rejulia(theyear,theday);%change julian day to normal day (year month day)leapyear=rem(theyear,4);if leapyear>0leap=0;elseif rem(theyear,100)==0 & rem(theyear,400)~=0 leap=0;elseleap=1;endendif leap==0if theday<=31therealmonth=1;therealday=theday;endif theday>=32 & theday<=59therealmonth=2;therealday=theday-31;endif theday>=60 & theday<=90therealmonth=3;therealday=theday-59;endif theday>=91 & theday<=120therealmonth=4;therealday=theday-90;endif theday>=121 & theday<=151therealmonth=5;therealday=theday-120;endif theday>=152 & theday<=181therealmonth=6;therealday=theday-151;endif theday>=182 & theday<=212therealmonth=7;therealday=theday-181;endif theday>=213 & theday<=243therealmonth=8;therealday=theday-212;endif theday>=244 & theday<=273therealmonth=9;therealday=theday-243;endif theday>=274 & theday<=304therealmonth=10;therealday=theday-274;endif theday>=305 & theday<=334therealmonth=11;therealday=theday-305;endif theday>=335 & theday<=365therealmonth=12;therealday=theday-334;endendif leap==1if theday<=31therealmonth=1;therealday=theday;endif theday>=32 & theday<=60therealmonth=2;therealday=theday-31;endif theday>=61 & theday<=91;therealmonth=3;therealday=theday-60;endif theday>=92 & theday<=121;therealmonth=4;therealday=theday-91;endif theday>=122 & theday<=152;therealmonth=5;therealday=theday-121;endif theday>=153 & theday<=182;therealmonth=6;therealday=theday-152;endif theday>=183 & theday<=213;therealmonth=7;therealday=theday-182;endif theday>=214 & theday<=244;therealmonth=8;therealday=theday-213;endif theday>=245 & theday<=274;therealmonth=9;therealday=theday-244;endif theday>=275 & theday<=305;therealmonth=10;therealday=theday-275;endif theday>=306 & theday<=335;therealmonth=11;therealday=theday-306;endif theday>=336 & theday<=366;therealmonth=12;therealday=theday-335;endendy(1)=theyear;y(2)=therealmonth;y(3)=therealday;参考文献:1、/wiki/Julian_day维基百科词条:儒略日(Julian day)2、/manuals/sac/manual.html SAC Users Guide(v101.5c)- February 20123、/manuals/rdseed.htm rdseed Manual(v5.2),2012.02.06。
儒略日计算公式
儒略日计算公式儒略日计算公式为:D=A-H日界线位置的计算,依据纬度高低计算日界线位置:“赤道以北的地区,正午太阳高度为0°~( 90°-0°),向南递增。
由赤道向两极递减”,其纬度数与距离地球南北极距离差不多一样。
所以: D=H=90°-( 0°+180°)/( 0°+180°)=H-90°-( 0°+180°)/( 0°+180°)=H-(H+90°-(H-90°-90°)/(H-90°-90°))。
A-H日界线位置的计算,依据纬度高低计算日界线位置:“赤道以北的地区,正午太阳高度为0°~( 90°-0°),向南递增。
由赤道向两极递减”,其纬度数与距离地球南北极距离差不多一样。
所以:A-H=90°+180°/(0°+180°)=H+180°-(H-90°-90°)/(H-90°-90°)=H+180°-(H+90°-90°)/(H-90°-90°)=H+180°-90°/(H-90°-90°)。
从中可知:由赤道向南、向北,即向两极递减。
D= D+H-{A-H}日界线的计算,是通过相同地点与不同地点计算出来的,也就是说计算出的日界线与实际日界线之间的差值,除以这个地方的平均海拔,这个地方的平均海拔在60米以上,就称为“日界线”;反之,如果这个地方的平均海拔不足60米,就称为“日界线下限”。
也可以求出来。
(这些都是在天文台里面观测出来的) D=A-H,那么一条直线过纬度30°。
(它是假想的,但是大概可以这样认为)由于一年有春分、夏至、秋分、冬至四个节气,每个节气长达15天,则根据地球围绕太阳运动的周期规律,即360天的日历循环,所以这样计算的话,刚好与地球一年的平均回归周期吻合,即A-H=15。
阴历阳历转换计算公式
阴历阳历转换计算公式1、阳历日期推算阴历日期的方法:前已述及阴历日期是以月亮的圆缺为计月单位,其以逢朔为初一,以月望为十五(大月为十六日),以月晦为二十九日(大月为三十日)。
如要知道1984年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即是阴历二十七日2.公历换算为农历二十四节气在黄道上的位置是固定的,但各年有平年和闰年之分,就使得回归年天数与实际天数不等,每年在日历上可差一天。
这样可以将阴历经过任意整回归年在现在的日历上查到阳历(阳历一年相当阴历的月数为365.2422/29.530588=12.36827个月)。
例如,可先在1995年的日历上查得与(该年)阴历对应的阳历日期,这样就找到了临时落脚点,也就是找到了阴阳互换的关键。
例如,可先以阴历四月初一(日)为引数,在1995年日历上查到对应的阳历为4月30日。
由于已经计算出经过的月数,将经过的月数的尾数(小数)化为日,加在4月30日上,就得到经过(1995-1070)整年数的阳历日期,也就是起始阴历日期对应的阳历日期,即得到了待查的日期为4月30日加上0.64957×29.530588得到(1070年)5月19.1821840日。
这样就得到了所给例子的阴阳历日期换算结果……”。
0.64957月的由来,(1995-1070)×12.36827=11440.64957月已知依泽公生于梁龙德二年(922)六月二十一日,依下表提供的2099年各月初一日的公历月日数,可以算出龙德二年六月二十一日的公历月日数公元2099年农历各月初一日的公历月日(2099-922)×12.36827=1455.45379月余数为0.45379月×29.530588日=13.4O日因2099年五月初一日(包括该年闯二月)在公历6月19日,加上计算所得的13日为龙德二年六月初一日的公历月日,即该年7月2日,则该年农历六月二十一日为该年7月22日。
玩转公历推算日干支
玩转公历推算日干支玩转公历推算日干支关于从公历日期推算日干支,网上多有网友撰文介绍,有的用公式,有的用口诀,如默诵“卯申子巳”法、“欲推來年元旦日先知今年日干支”法、“减一除四取商数”法等,方法林林总总,不一而足。
但有的方法只适用某一时段,超过某时段范围方法失效;有的方法推算过程复杂,不易掌握。
普遍缺点是读者看后知其然不知其所以然,按其方法推算,能推出正确的结果,却不知道为什么。
为便于理解,帮助提高运算准确性,借助大师们的经验,作个综述。
一、基本规律:(一)公元前(儒略历)年份减1能被4整除的都是闰年,其余是平年。
如公元前5年减1为4,能整除,是闰年。
(二)公元1年至公元1582年10月4日(儒略历)能被4整除的年份都是闰年。
公元1582年10月4日直接跳到10月15日,前后相差11天,中间没有10月5日至10月14日这10天。
(三)1582年10月15日(包括当日)以后(格里历)1、能被100整除且能被400整除的年份是闰年,能被100整除但不能被400整除的年份是平年;即每4个世纪有3个平年,1个闰年。
如1600年置闰,1700、1800、1900年不置闰,2000年置闰,2100、2200、2300年不置闰,依此类推。
2、其他不能被100整除的年份,能被4整除的年份是闰年,不能被4整除的是平年。
(四)公元1582年以前,每80年相同月日的干支重复一次如公元前1年12月31日干支是丁丑,公元前81年12月31日、公元80年12月31日的干支都是丁丑。
(注意:没有公元0年或公元前0年)。
(五)闰年每年366天,其中2月为29天;平年每年365天,其中2月为28天。
二、推算某年某月某日干支的方法(一)1582年以前日干支的推算:1、确定基点年:以公元前1年12月31日丙子日(序号13)为起始点,往前往后推80年的整数倍的年份(因没有公元前0年,公元前的要减1年,如公元前81年减1为80,公元前161年减1为160)作为推算基点。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
儒略日与公历转换公式
儒略日是一种表示日期的方法,它最初由儒略历制定者所使用,后来被广泛应用于科学和天文学领域。
儒略日是指自公元前4713年1月1日中午12点(格林威治时间)至今所经历的天数。
儒略日的计算涉及到公历和儒略历的转换,下面介绍一下常用的儒略日与公历转换公式。
儒略日转公历日期公式:
首先,儒略日数J的整数部分代表的是距离公元前4713年1月1日中午12点的天数,而小数部分代表的是当天已经过去的时间(例如,0.5代表中午12点半)。
为了将儒略日转换成公历日期,我们需要使用以下公式:
L = J + 68569
N = (4L / 146097)
L = L - (146097N + 3) / 4
I = (4000(L+1))/1461001
L = L - (1461I/4) + 31
J = 80L/2447
D = L - (2447J/80)
L = J / 11
M = J + 2 - 12L
Y = 100(I - 49) + L + M
其中,L是一个中间变量,N是每400年有多少个闰年的修正项,
I是每100年有多少个闰年的修正项,J是一个中间变量,D是日期,M是月份,Y是年份。
公历日期转儒略日公式:
如果我们已知公历日期,想要将其转换成儒略日,则可以使用以下公式:
J = (1461(Y+4800+(M-14)/12))/4
+(367(M-2-12((M-14)/12)))/12 - (3((Y+4900+(M-14)/12)/100))/4 +D-32075
其中,Y是年份,M是月份,D是日期,J是儒略日数。
以上就是儒略日与公历转换的公式,它们在天文学、地球科学和计算机科学等领域都有广泛应用。