home *** CD-ROM | disk | FTP | other *** search
/ nisttime.carsoncity.k12.mi.us / nisttime.carsoncity.k12.mi.us.tar / nisttime.carsoncity.k12.mi.us / pub / lockclock / cvt2jd.c < prev    next >
C/C++ Source or Header  |  1996-11-18  |  991b  |  35 lines

  1. #include "sizint.h"
  2. LONG cvt2jd(yr,mo,day)
  3. int yr;
  4. int mo;
  5. int day;
  6. {
  7. LONG mjd;  /*holds result*/
  8. int ilp;       /*number of leap years from 1900 not counting current*/
  9. static int dmo[12] = {0,31,59,90,120,151,181,212,243,273,304,334};
  10. /*
  11.     this subroutine receives a date in the form year, month and day
  12.     and returns the MJD corresponding to that day.  the year may
  13.     be specified as 90 or 1990.
  14. */
  15.     if(yr > 1900) yr -= 1900;    /* convert to years since 1900 */
  16.     ilp=(yr-1)/4;             /* number of leap years since 1900*/
  17. /*
  18.     compute number of days since 1900 + 1 day for each leap year
  19.     + number of days since start of this year
  20. */
  21.     mjd = 365*(LONG) yr + (LONG) (ilp + dmo[mo-1] + day - 1);
  22.     mjd += 15020;      /* add MJD of 1900 */
  23. /*
  24.     if current month is jan or feb then it does not matter if
  25.     current year is a leap year
  26. */
  27.     if(mo < 3) return(mjd);
  28. /*
  29.     if current month is march or later then must add 1 day if
  30.     current year is divisible by 4
  31. */
  32.     if( (yr & 3) == 0) mjd++;
  33.     return(mjd);
  34. }
  35.