日期转换:年月日、年积日、简化儒略日、GPS周的MATLAB实现

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

  1. 年月日转年纪日
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.年积日转年月日

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.年积日转简化儒略日

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.简化儒略日转年积日

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周

function [week,weekd] = mjd2gpsweek(mjd)
    week = (mjd-44244)/7;
    weekd = mjd-44244-week*7;
end

6.GPS周转简化儒略日

function mjd = gpsweek2mjd(week,weekd)
    mjd = week*7+44244+weekd;
end

希望对大家有所帮助!

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空