function [gtime]=greg2(yd,yr) % GREG2: converts decimal yearday to standard Gregorian time. % [gtime]=GREG2(yd,yr) converts decimal yearday to corresponding % Gregorian calendar dates. In this convention, Julian day 2440000 % begins at 0000 UT May 23 1968. % % INPUT: yd - decimal yearday (e.g., 0000 UT Jan 1 is 0.0) % yr - year (e.g., 1995) % % OUTPUT: gtime is a six component Gregorian time vector % gtime=[year mo da hr mi sec] % % Example: [1995 01 01 12 00 00] = greg2(0.5, 1995) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 3/10/97: version 1.0 % 4/7/99: version 1.2 (simplified by AA) % 8/5/99: version 2.0 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% js = julianmd(yr,01,01,00); julian = js + yd; julian=julian+5.e-9; % kludge to prevent roundoff error on seconds % if you want Julian Days to start at noon... % h=rem(julian,1)*24+12; % i=(h >= 24); % julian(i)=julian(i)+1; % h(i)=h(i)-24; Otherwise,.... secs=rem(julian,1)*24*3600; j = floor(julian) - 1721119; in = 4*j -1; y = floor(in/146097); j = in - 146097*y; in = floor(j/4); in = 4*in +3; j = floor(in/1461); d = floor(((in - 1461*j) +4)/4); in = 5*d -3; m = floor(in/153); d = floor(((in - 153*m) +5)/5); y = y*100 +j; mo=m-9; yr=y+1; i=(m<10); mo(i)=m(i)+3; yr(i)=y(i); [hour,min,sec]=s2hms(secs); gtime=[yr(:) mo(:) d(:) hour(:) min(:) sec(:)];