?? dates.m
字號:
% DATES% Converts between the following date formats:% - Year, Month, Day% - Year, Day-of-Year% - Year, Decimal Year% - GPS week, seconds of week%% Required M-files: cal2jd, doy2jd, gps2jd, jd2cal, jd2dow, jd2doy, jd2gpsa% Created 24 May 96, M. Craymer% Modified 03 Aug 96, Converted to MATLAB% Modified 29 Sep 98, Convert each option to all other formats% Modified 25 Mar 99, Converted to use isempty% Modified 26 Apr 99, Rewrote to use new date conversion routines% Added conversion of GPS week and day of weekwhile 1clear allwarning onver = '1.0 (99.04.26)';day = ['Sun';'Mon';'Tue';'Wed';'Thu';'Fri';'Sat'];month = ['Jan';'Feb';'Mar';'Apr';'May';'Jun';'Jul';'Aug';'Sep';'Oct';'Nov';'Dec'];fprintf(1,'\n\n');fprintf(1,'-------------------------------------------------\n');fprintf(1,' DATES: Converts between different date formats.\n');fprintf(1,' M.Craymer, v%s\n',ver);fprintf(1,'-------------------------------------------------\n');fprintf(1,'\n');fprintf(1,'Available input date formats:\n');fprintf(1,' 1) Year, Month, Day\n');fprintf(1,' 2) Year, Day of Year\n');fprintf(1,' 3) Year (including decimal year)\n');fprintf(1,' 4) GPS Week, Sec of Week, Number Rollovers\n');fprintf(1,' 5) Julian Date\n');fprintf(1,'\n');buf = input('Enter date format and date [quit] > ','s');if isempty(buf) fmt = 0;else date = sscanf(buf,'%f'); fmt = date(1);endok = 1;%----- Exit programif fmt == 0 clear all return;%----- Day, month, yearelseif fmt == 1 if length(date) < 4 warning('Too few date arguments entered'); ok = 0; else iyr = date(2); mn = date(3); dy = date(4); if mn<1 | mn>12 warning('Invalid month'); ok = 0; end if dy<1 | dy>=32 warning('Invalid day'); ok = 0; end if ok jd = cal2jd(iyr,mn,dy); doy = jd2doy(jd); yr = jd2yr(jd); dow = jd2dow(jd); [gpsweek,sow,rollover] = jd2gps(jd); end end%----- Year, day of yearelseif fmt == 2 if length(date) < 3 warning('Too few date arguments entered') ok = 0; else iyr = date(2); doy = date(3); if doy<1 | doy>=367 warning('Invliad day of year'); ok = 0; end if ok jd=doy2jd(iyr,doy); [iyr,mn,dy]=jd2cal(jd); yr = jd2yr(jd); dow = jd2dow(jd); [gpsweek,sow,rollover] = jd2gps(jd); end end%----- Year & decimal of yearelseif fmt == 3 if length(date) < 2 warning('No date arguments entered'); ok = 0; else yr = date(2); jd=yr2jd(yr); [iyr,mn,dy]=jd2cal(jd); doy = jd2doy(jd); dow = jd2dow(jd); [gpsweek,sow,rollover] = jd2gps(jd); end%----- GPS week, sec of weekelseif fmt == 4 if length(date) < 4 rollover = 0; else rollover = date(4); end if length(date) < 3 sow = 0; else sow = date(3); end if length(date) < 2 warning('No date arguments entered'); ok = 0; else gpsweek = date(2); if gpsweek<1 | gpsweek>=1025 warning('Invalid GPS week'); ok = 0; end if sow<0 | sow>604800 warning('Invliad sec of week'); ok = 0; end if ok jd = gps2jd(gpsweek,sow,rollover); [iyr,mn,dy]=jd2cal(jd); doy = jd2doy(jd); yr = jd2yr(jd); dow = jd2dow(jd); end end%----- Julian dateelseif fmt == 5 if length(date) < 2 warning('No date arguments entered'); ok = 0; else jd = date(2); if jd<1 warning('Invalid Julian date'); ok = 0; end if ok [iyr,mn,dy]=jd2cal(jd); doy = jd2doy(jd); yr = jd2yr(jd); dow = jd2dow(jd); [gpsweek,sow,rollover] = jd2gps(jd); end end%----- Invalid date formatelse warning('Undefined date format entered'); ok = 0;end%----- List resultsif ok fprintf(1,'\n'); fprintf(1,'Date %4d-%2d-%4.1f\n',[iyr,mn,dy]); fprintf(1,'Year %12.4f\n',yr); fprintf(1,'Day of Year %6.1f\n',doy); fprintf(1,'Day of Week %s\n',day(dow,:)); fprintf(1,'GPS Week %6d\n',gpsweek); fprintf(1,'Sec of Week %6.0f\n',sow); fprintf(1,'Julian Date %9.1f\n',jd);endend %while
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -