1.日期转换为mjd
先将日期转换成jd,jd再减去2400000.5就变成了mjd。在转换成jd的时候,要注意在1582.10.5之前使用的是儒略历,自此之后使用的是格里高利历,这两者在转换成jd的时候计算公式有些不同。
clear all;
clc;
y=input('请输入年份:');
m=input('请输入月份:');
d=input('请输入日:');
while m<=2
y=y-1;
m=m+12;
end
a=floor(y/100);
if (y<1582)||((y==1582)&&(m<10))||((y==1582)&&(m==10)&&(d<5))
b=0;%儒略历时,b=0
else
b=2-a+floor(a/4);%格里高利历时b的取值
end
jd=floor(365.25*(y+4716))+floor(30.6001*(m+1))+d+b-1524.5;
mjd=jd-2400000.5;
fprintf('mjd:%f',mjd)
2.mjd转换成日期
首先将mjd转换成jd再转换成日期
clear all;
clc;
mjd=input('请输入mjd值:');
jd=mjd+2400000.5;
jd=jd+0.5;
z=floor(jd);
f=jd-z;
if z<2299161
a=z;
else
aa=floor((z-1867216.25)/36524.25);
a=z+1+aa-floor(aa/4);
end
b=a+1524;
c=floor((b-122.1)/365.25);
d=floor(365.25*c);
e=floor((b-d)/30.6001);
%计算日
D=floor(b-d-floor(30.6001*e)+f);
%计算月份
if e<14
M=e-1;
elseif (e==14)||(e==15)
M=e-13;
end
%计算年份
if M>2
Y=c-4716;
elseif (M==1)||(M==2)
Y=c-4715;
end
%输出日期
fprintf('MJD转换成日期为:%d年%d月%d日',Y,M,D)