年月日、年积日、简化儒略日、GPS周之间相互转换----matlab版
我是水怪的哥
2022年10月18日 10:24
收录于文集
共31篇

感谢CSDN大佬的分享【https://blog.csdn.net/qq_41696018/article/details/119647098】,原文是C++编写的,我在这里改成matlab。

  1. 年月日转年纪日

代码块
JavaScript
自动换行
复制代码
function out_yd = wzq_ymd2yd(year,month,day)
%% convert year-month-day to days in year
% modified from: https://blog.csdn.net/qq_41696018/article/details/119647098
    doy = 0;
    days_in_month = [31,28,31,30,31,30,31,31,30,31,30,31];
    if(mod(year,4)==0 && (mod(year,100)~=0 || mod(year,400)==0))
        days_in_month(2)=29;
    end
    for i = 1:month-1
        doy = doy +days_in_month(i);
    end
    out_yd = doy+day;
end
复制成功

2.年积日转年月日

代码块
JavaScript
自动换行
复制代码
function [year,month,day] = wzq_yd2ymd(year,doy)
%% convert days in year to year-month-day
% modified from: https://blog.csdn.net/qq_41696018/article/details/119647098
    days_in_month = [31,28,31,30,31,30,31,31,30,31,30,31];
    if(mod(year,4)==0 && (mod(year,100)~=0 || mod(year,400)==0))
        days_in_month(2)=29;
    end
    id = doy;
    month = 0;
    day   = 0;
    for i = 1:12
        id = id - days_in_month(i);
        month = i;
        if(id>0)
            continue
        end
        day = id + days_in_month(i);
        break
    end
end
复制成功

3.年积日转简化儒略日

代码块
JavaScript
自动换行
复制代码
function [year,month,day] = wzq_yd2ymd(year,doy)
%% convert days in year to year-month-day
% modified from: https://blog.csdn.net/qq_41696018/article/details/119647098
    days_in_month = [31,28,31,30,31,30,31,31,30,31,30,31];
    if(mod(year,4)==0 && (mod(year,100)~=0 || mod(year,400)==0))
        days_in_month(2)=29;
    end
    id = doy;
    month = 0;
    day   = 0;
    for i = 1:12
        id = id - days_in_month(i);
        month = i;
        if(id>0)
            continue
        end
        day = id + days_in_month(i);
        break
    end
end
复制成功

4.简化儒略日转年积日

代码块
JavaScript
自动换行
复制代码
function [year,doy] = wzq_mjd2yd(mjd)
%% ucas@Chistrong Wen
%  2022-10-17
    days   = [366,365,365,365];
    mjd52  = 34012;
    doy    = mjd+1-mjd52;
    i      = 1;
    year   = 52;
    while(doy>days(i))
        doy = doy-days(i);
        year = year+1;
        i = mod(year,4)+1;
    end
    if(year<1900)
        if(year>60)
            year = year +1900;
        else
            year = year +2000;
        end
    end
end
复制成功

5.简化儒略日转GPS周

代码块
JavaScript
自动换行
复制代码
function [week,weekd] = mjd2gpsweek(mjd)
    week = (mjd-44244)/7;
    weekd = mjd-44244-week*7;
end
复制成功

6.GPS周转简化儒略日

代码块
JavaScript
自动换行
复制代码
function mjd = gpsweek2mjd(week,weekd)
    mjd = week*7+44244+weekd;
end
复制成功

希望对大家有所帮助!