平淡人生

静待花开,花开常有香相伴;倾听流水,流水总有乐相陪;有缘清风携舟涉碧水,无缘细雨伴君独自行。

JS实现儒略日的计算

在网络上有各种各样的计算方法,相对来讲都是接近但不准确,所以自己动手修改了一下,其实也就是简单的计算,把小时,分钟,秒这些去掉。计算出来的结果就相对于符合了。

现在的公历起源于埃及历,由古罗马的恺撒在公元前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)发明的,是天文学上不用一种不用年、月的长期纪日法,用它可以很方便地计算到两时间点间以天数计量的时间间隔。儒略日以公元前4713年儒略历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日平午。之所以采用约化儒略日的表达方法,主要有一下2个方面的考虑:

1.日期天数的计算往往习惯以午夜时分起算,而不是正午。
2.在1859至2130年之间,只需要5位数字来表示日期就够了,而不需要全部的7位数字

因此MJD 0就等于JD 2400000.5。对于计算机来说,MJD也意味着更少的存储单元

JS脚本代码

<script>
	var now = new Date();
    var month = now.getUTCMonth() + 1;
    var day = now.getUTCDate();
    var year = now.getUTCFullYear();

function computes()   
{
	var y = eval(year);
	var m = eval(month);
	var d = eval(day);


	var extra = 100.0*y + m - 190002.5;
	var rjd = 367.0*y;
	rjd -= Math.floor(7.0*(y+Math.floor((m+9.0)/12.0))/4.0);
	rjd += Math.floor(275.0*m/9.0);
	rjd += d;

	rjd += 1721013.5;
	rjd -= 0.5*extra/Math.abs(extra);
	rjd += 0.5;
	form.results.value = rjd;
}
</script>
<form name="form" id="form">

<input text="text" name="results" id="results">
</form>
<script>
computes();
</script>


Categorised as: 技术整理