MJD与日期的相互转化(matlab)

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)

 

5dfd24f01bd44ecaa8d2d49af127d280.png

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)

cec693493bf141ca90e250a0cdf8ce2c.png

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值