📄 ymd2mjd.m
字号:
function mjd=ymd2mjd(ymd)
%YMD2MJD Gregorian Calendar to Modified Julian Date
% YMD2MJD(ymd) returns the Modified Julian Date MJD (JD-2400000.5)
% for 0 hrs. Input is a three-element row vector containing the
% decimal year, month and day in the Gregorian Calendar
%
% ymd = [ year month day ]
%
% or a string in the format 'yy-mm-dd' or 'dd-mmm-yy'.
% Acceptable years are
% 00-49, interpreted as 2000-2049,
% 50-99, " " 1950-1999,
% 100 upwards, interpreted literally.
% If the day is not OK the function returns the MJD into the next
% (previous) month or year. Fraction of days are carried into the mjd.
% If the input year or month are not OK the function returns NaN.
% Fractions of year and month are meaningless.
%
% See also MJD2YMD, YMD2STR and STR2YMD.
% H. van der Marel, LGR, 29-04-95
% (c) Geodetic Computing Centre, TU Delft
if isstr(ymd)
ymd2=str2ymd(ymd);
year=round(ymd2(:,1));
month=round(ymd2(:,2));
day=ymd2(:,3);
else
year=round(ymd(:,1));
month=round(ymd(:,2));
day=ymd(:,3);
end
% Add default century
if year>=0 & year<=49
year=year+2000;
elseif year>=50 & year<=99
year=year+1900;
end
% Validate year and month
i=find(year<-4699 | month<1 | month>12);year(i)=NaN*i;month(i)=NaN*i;
% % Length of month in days
% lom=[31 28 31 30 31 30 31 31 30 31 30 31]
% % Account for leap year
% if rem(year,4)==0, lom(2)=29;, else, lom(2)=28;, end
% if rem(year,100)==0 & rem(year,400)==0, lom(2)=28;, end
% % Validate day
% if day<1 | day>lom(month),disp('Warning YMD2MJD: invalid Day'),end
% Modified Julian Date
mjd= fix((1461*(year-fix((12-month)/10)+4712))/4) ...
+ fix((306*rem(month+9,12)+5)/10) ...
- fix((3*fix((year-fix((12-month)/10)+4900)/100))/4) ...
+ day - 2399904;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -