加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

儒略日和普通日期之间的转换代码

(2016-03-24 21:06:46)
标签:

遥感

1.日期转儒略日
function y=julia(theyear,themonth,theday)
%return the julian day (year,day)定义函数julia为转换为julian日期函数,变量y为返回的julian日期,输入变量为theyear/年,themonth/月,theday/日
%例如输入julia(2008,12,31)返回2008,366
leapyear=rem(theyear,4);    %年对4求余数
if leapyear>0        
    leap=0;               %判断余数大于0,不能被4整除,则用leap标记这一年不是闰年(标记为0)
else
    if rem(theyear,100)==0 && rem(theyear,400)~=0
        leap=0;           %能被4整除但是不能被400整除也不是闰年,则用leap标记这一年不是闰年
    else
        leap=1;           %其他情况是闰年
    end
end
%%%%%%采用平年的日历,按1-12月分月计算julian日期
    if themonth==1
        juliaday=theday;
    end
    if themonth==2
        juliaday=theday+31;
    end
    if themonth==3
        juliaday=theday+59;
    end
    if themonth==4
        juliaday=theday+90;
    end
    if themonth==5
        juliaday=theday+120;
    end
    if themonth==6
        juliaday=theday+151;
    end
    if themonth==7
        juliaday=theday+181;
    end
    if themonth==8
        juliaday=theday+212;
    end
    if themonth==9
        juliaday=theday+243;
    end
    if themonth==10
        juliaday=theday+273;
    end
    if themonth==11
        juliaday=theday+304;
    end
    if themonth==12
        juliaday=theday+334;
    end
if leap==1
    if themonth<=2            %如果是闰年,当月份小于2月时,julian日期与平年相同
        juliaday=juliaday;
    end
    if themonth>=3
        juliaday=juliaday+1;    %当月份大于2月时,在平年的基础上加一天
    end
end
y(1)=theyear;                
y(2)=juliaday;                 %返回的矢
2.儒略日转日期
function [year,month,dayy]=w(juliaday)   %输入数值

% 输入juliaday格式为2009098
cal=num2str(juliaday);
yr=str2num(cal(1:4));
day=str2num(cal(5:7));
leapyear=rem(yr,4);    %年对4求余数
if leapyear>0        
    leap=0;               %判断余数大于0,不能被4整除,则用leap标记这一年不是闰年(标记为0)
else
    if rem(yr,100)==0 && rem(yr,400)~=0
        leap=0;           %能被4整除但是不能被400整除也不是闰年,则用leap标记这一年不是闰年
    else
        leap=1;           %其他情况是闰年
    end
end

    
%%%%%%采用平年的日历,按1-12月分月计算julian日期
if day <= 31
    day=day;
    d=1;
end
if day > (334+leap)
    day=day-(334+leap);
    d=12;
end
if day > (304+leap)
    day=day-(304+leap);
    d=11;
end
if day > (273+leap)
    day=day-(273+leap);
    d=10;
end
if day > (243+leap)
    day=day-(243+leap);
    d=9;
end
if day > (212+leap)
    day=day-(212+leap);
    d=8;
end
if day >(181+leap)
    day=day-181;
    d=7;
end
if day > (151+leap)
    day=day-(151+leap);
    d=6;
end
if day > (120+leap)
    day=day-(120+leap);
    d=5;
end
if day > (90+leap)
    day=day-(90+leap);
    d=4;
end
if day > (59+leap)
    day=day-(59+leap);
    d=3;
end
if day > 31
    day=day-31;
    d=2;
end
year=yr;
month=d;
dayy=day;
  

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有