儒略日与公历转换公式
常用时间坐标转换知识总结(公开)

1 时间坐标系统转换方法研究1.1 不同时间类型研究内容中涉及到7种不同时间类型,分别是协调世界时(UTC )、地球动力学时(TT )、国际原子时(TAI )、太阳系质心动力学时(TDB )、地心坐标时(TCG )、GPS 时(GPST )和北斗时(BDT )。
UTC 是协调世界时,协调世界时的秒长严格等于原子时的秒长,而协调世界时与世界时UT 间的时刻差规定需要保持在0.9s 以内,否则将采取闰秒的方式进行调整。
闰秒一般发生在6月30日及12月31日。
地球动力学时(TDT )是建立在国际原子时TAI 的基础上的,其秒长与国际原子时相等。
1991年,第21届IAU 大会决定将地球动力学时(TDT )改称为地球时(TT )。
地球时(TT )和国际原子时(TAI )之间的关系式可以表示为:32.184TT TAI s =+ (1-1)国际原子时间(TAI ),是地球上的时间基准,它由国际时间局从多个国家的原子钟分析得出,被定义为:32.184()TAI TT s UTC =-=+跳秒 (1-2)太阳系质心动力学时有时也被简称为质心动力学时。
这是一种用以解算坐标原点位于太阳系质心的运动方程(如行星运动方程)并编制其星表时所用的时间系统。
质心动力学时(TDB )和地球时的(TT )之间没有长期漂移只有周期项变化,即0.001658sin s TDB TT M -=0e 20.000014sin 2()s MV X X c +-+ (1-3)其中M 为地球绕日公转的平近点角;e V 为地球质心在太阳系质心坐标系中的公转速度矢量;0X 为地心在太阳系质心坐标系中的位置矢量;X 为地面钟在太阳系质心坐标系中的位置矢量;0X X -实际上就是地面钟在地心坐标系中的位置矢量;c 为真空中的光速。
地心坐标时(TCG )是原点位于地心的天球坐标系中所使用的第四维坐标—时间坐标,用于讨论绕地球运行的卫星等天体的运动规律、编制相应的星历。
儒略日 纪日体系

儒略日纪日体系第一节儒略日纪日体系《儒略历》是现行《公历》的前身,是古罗马执政官儒略凯撒于公元前46年颁布实行的,故以"儒略"命名。
儒略日则与《儒略历》不同,儒略日是一种连续递增的纪日体系。
儒略日取《儒略历》公元前4713年1月1日12时为起点顺数而下,每过1日加1,连续不断。
儒略日由十六世纪意大利学者斯卡里杰(1540年-1609年)于1582年创制。
目的是用来确定不同历法、纪元或纪年法所记录的各种历史事件之间所经过的时间。
目前已为世界各国普遍采用,认为用其记事、考证、历算等都有极高的准确性。
斯卡里杰是意大利语言学家兼历史学家、医师斯卡里杰的儿子。
他比较各文明古国创造的计时方法,研究校正各种历法的时间,于1582年提出了连续递增的计日体系,并以其父儒略的名字命名,称"儒略日"。
斯卡里杰取儒略日这种长期计数的周期为7980年。
算式为:7980=28×19×15。
其中数字"28"是儒略历所谓太阳周的年数。
经过一太阳周期,星期的日期便又回到了同一天。
数字"19"是太阳周的年数,即月相在太阳年中的某一日重复出现的周期。
数字"15"是一种指示周期,它起源于古罗马定期课程或政府征用的日程表。
斯卡里杰选择公元前4713年作为儒略日的纪元,是因为它在过去年代中是上述三个周期一同开始的最近一年。
取12时为一天的起点是1925年以前国际的通例。
从那年起才改为由子夜作为一天之始。
儒略日的纪日体系,虽号称从公元前4713年1月1日12时为起点顺数而下,每过1日加1,实际上于1582年前并没有做到。
虽称只计数自然天,不受年、月、季节的影响,但由上可知,儒略日的纪日体系仍与《儒略历》有着内在联系,这就是年的岁实是相同的。
《儒略历》历年长度为365.25日,大于回归年365.2422日,大约每128年多出一天。
儒略日的计算

儒略⽇的计算儒略⽇的计算现在的公历起源于埃及历,由古罗马的恺撒在公元前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⽇平午。
二十四节气如何计算

二十四节气如何计算?立春日期的计算:计算公式:[Y*D+C]-L公式解读:年数的后2位乘0.2422加3.87取整数减闰年数。
21世纪C值=3.87,22世纪C值=4.15。
二十四节气的计算立春日期的计算计算公式:[Y*D+C]-L公式解读:年数的后2位乘0.2422加3.87取整数减闰年数。
21世纪C值=3.87,22世纪C值=4.15。
举例说明:2058年立春日期的计算步骤[58×.0.2422+3.87]-[(58-1)/4]=17-14=3,则2月3日立春。
雨水日期的计算[Y*D+C]-L公式解读:年数的后2位乘0.2422加18.74取整数减闰年数。
21世纪雨水的C值18.73。
举例说明:2008年雨水日期=[8×.0.2422+18.73]-[(8-1)/4]=20-1=19,2月19日雨水。
例外:2026年计算得出的雨水日期应调减一天为18日。
惊蛰日期的计算[Y*D+C]-L公式解读:年数的后2位乘0.2422加5.63取整数减闰年数。
21世纪惊蛰的C值=5.63。
举例说明:2088年惊蛰日期=[88×.0.2422+5.63]-[88/4]=26-22=4,3月4日是惊蛰。
例外:无。
春分日期的计算[Y*D+C]-L公式解读:年数的后2位乘0.2422加20.646取整数减闰年数。
21世纪春分的C值=20.646。
举例说明:2092年春分日期=[92×.0.2422+20.646]-[92/4]=42-23=19,3月19日是春分。
例外:2084年的计算结果加1日。
清明节日期的计算[Y*D+C]-L公式解读:Y=年数后2位,D=0.2422,L=闰年数,21世纪C=4.81,20世纪=5.59。
例外:无。
谷雨节日期的计算[Y*D+C]-L公式解读:Y=年数后2位,D=0.2422,L=闰年数,21世纪C=20.1,20世纪=20.888。
举例说明:2088年谷雨日期=[88×.0.2422+20.1]-[88/4]=41-22=19,4月19日是谷雨。
阴历阳历转换计算公式

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日。
农历换国历

农历换国历农历换国历是指根据农历日历和国际标准格雷戈里日历之间的差异,将农历日期转换为对应的国历日期的过程。
由于中国传统的农历历法在中国境内仍然广泛应用,因此了解如何换算农历日期至国历日期对很多人来说是一项重要的技能。
下面将详细介绍农历换国历的方法及相关知识。
农历,又称阴历或旧历,是中国传统的日历系统。
它以月亮的运行周期为基础,一年有12个月,每个月有30或29天。
因为月亮的运行周期不是完全精确的,导致农历的日期与太阳历的日期之间存在差异。
而国历,也被称为公历或西历,是一种以太阳周期为基础的日历系统,年份基于地球绕太阳运行一周的时间计算。
国历采用了格里高利修正法,使日期与太阳的运行更加精确。
农历与国历之间的差异主要体现在年份和月份上。
农历的年份常常比国历的年份要小,因为农历没有考虑闰年的问题,而国历中每四年有一个闰年。
月份上,农历的月份可能比国历多几天,因为农历月份的长度不固定。
在换算农历日期至国历日期时,我们需要了解所要转换的具体农历年份和月份。
一般来说,首先需要确定农历年份对应的国历年份,这可以通过查看农历年份与国历年份的对照表来获得。
然后,根据农历年份和月份的信息,结合农历每个月的天数,计算出该农历月份在对应国历年份中的月份和日期。
换算的具体步骤如下:1. 确定要转换的农历年份和月份。
2. 根据农历年份和对照表,找到对应的国历年份。
3. 确定农历每个月的天数。
4. 累加各个月份的天数,直到所要转换的农历月份。
5. 在对应的国历年份中,找到对应的月份和日期。
需要注意的是,在换算农历日期至国历日期时,也要考虑到闰月的问题。
如果所要转换的农历年份中包含闰月,需要根据具体情况进行处理。
闰月一般比正常农历月份要长一些,因此在累加各个月份的天数时,需要注意将闰月的天数也考虑在内。
掌握农历换国历的方法,对于了解中国的传统节日、纪念日以及其他与农历相关的活动非常重要。
农历历法蕴含着丰富的文化内涵,通过换算农历日期至国历日期,我们可以更好地与传统文化接轨,丰富自己的文化知识。
回历、公历、农历的换算

回历、公历、农历的换算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、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
儒略日与公历转换公式
儒略日和公历是两种不同的时间计量方式,它们在历史上都曾被广泛使用。
儒略日是一种连续计数的时间系统,起始日为公元前4713年1月1日,而公历是一种以天、月和年为单位的时间系统。
在进行日期转换时,我们可以使用一些公式来帮助我们准确地将儒略日转换为公历或将公历转换为儒略日。
1. 儒略日转换为公历
要将儒略日转换为公历日期,我们可以使用以下公式:
L = JD + 68569
N = 4 * L / 146097
L = L - (146097 * N + 3) / 4
I = 4000 * (L + 1) / 1461001
L = L - 1461 * I / 4 + 31
J = 80 * L / 2447
D = L - 2447 * J / 80
L = J / 11
M = J + 2 - 12 * L
Y = 100 * (N - 49) + I + L
其中,JD表示儒略日,Y表示公历的年份,M表示月份,D表示日期。
2. 公历转换为儒略日
要将公历日期转换为儒略日,我们可以使用以下公式:
Y = 公历年份
M = 公历月份
D = 公历日期
如果M为1或2月,Y需要减去1,M需要加上12。
A = Y / 100
B = A / 4
C = 2 - A + B
E = 365.25 * (Y + 4716)
F = 30.6001 * (M + 1)
JD = C + D + E + F - 1524.5
其中,JD表示儒略日。
通过使用上述公式,我们可以将儒略日和公历之间进行精确的转换。
这些公式基于历史上对时间的精确测量和计算。
儒略日和公历的转换对于天文学家、历史学家和其他需要处理日期的人们来说都非常重要。
它们可以帮助我们在不同的时间系统之间进行准确的转换,以满足不同领域的需求。
总结起来,儒略日与公历转换公式是一种重要的工具,可以帮助我们在儒略日和公历之间进行准确的日期转换。
通过这些公式,我们可以方便地将儒略日转换为公历日期,或者将公历日期转换为儒略日,满足不同领域对时间计量的需求。
这些公式的准确性和实用性使其成为时间计量领域的重要工具。