home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Interactive Guide / c-cplusplus-interactive-guide.iso / c_ref / csource4 / 283_01 / julian.c < prev    next >
C/C++ Source or Header  |  1988-03-21  |  942b  |  35 lines

  1.  
  2. #include <math.h>
  3.  
  4. /*  Julian Day Number routine.  The julian day begins at noon.  Therefore,
  5. **  our Epoch, 2444238.5, is Midnight, 31 December 1979, aka 0.0 January 1980.
  6. **  If y = 0, the year is 1 B.C.  Note Gregorian reform on October 15, 1582;
  7. **  adjust English calendar dates where required (e.g., George Washington).
  8. */
  9.  
  10. double julian( y,m,d )  /* the julian day begins at noon, midnight is +0.5 */
  11. float y,m,d;
  12. {
  13.     double A, B, C, D;
  14.  
  15.     if ((m == 1.0) || (m == 2.0))
  16.     {
  17.         y -= 1.0; m += 12.0;
  18.     }
  19.     B = 0.0;
  20.     if (y > 1582.0) goto starkle;
  21.     else if (y == 1582.0)
  22.     {
  23.        if (m > 10.0) goto starkle;
  24.        else if ((m == 10.0) && (d >= 15.0))
  25.        {
  26.         starkle: modf( y/100, &A );
  27.                  modf( A/4, &B );
  28.                  B = 2 - A + B;
  29.     }  }
  30.     modf( 365.25 * y, &C ); 
  31.     modf( 30.6001 * (m + 1), &D );
  32.     return (B + C + D + d + 1720994.5);
  33. }
  34.  
  35.