儒略日与格里高利历的相互转换(MATLAB)

儒略日与格里高利历的相互转换

格里高利历(即公历)转化儒略日

function [JD,MJD] = YMD_JD(Y,M,D,H,Min,Sec)
%格里高利历转换儒略日
%input:Y、M、D、H、Min、Sec
%output:JD儒略日、MJD约化儒略日
h=H+Min/60+Sec/3600;
if M<=2
    y=Y-1;
    m=M+12;
else
    y=Y;
    m=M;
JD=floor(365.25*(y+4716))+floor(30.6001*(m+1))+D+h/24-1537.5;
MJD=JD-2400000.5;
end

程序正常运行,运算结果正确 ,不存在问题。

儒略日转换格里高利历

function [Y,M,D,H,Min,Sec] = JD_YMD(jd)
%儒略日转换格里高利历
%output:Y、M、D、H、Min、Sec
%input:JD儒略日                    和那个程序相互转换的时候,我发现好像少了一秒。
a=floor(jd+0.5);
b=a+1537;
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)+rem(jd+0.5,1));
h=(rem(jd+0.5,1))*24;
H=floor(h);
Min=floor((h-H)*60);
Sec=floor(((h-H)*60-Min)*60);
M=e-1-12*floor(e/14);
Y=c-4715-floor((7+M)/10);
end

总结:使用公历转化成儒略日,再使用儒略日转成公历后,发现少了一秒。应该是儒略日转公历存在一点问题。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值