// // Convert Gregorian date to Modified Julian Date (MJD) // // MJD 0 is 1858-11-17 // MJD 51544 is 2000-01-01 // MJD 99999 is 2132-08-31 // // 26-Nov-2005 /tvb // #include #include #include long calc_mjd (long year, long month, long day); void main (int argc, char *argv[]) { long mjd; time_t t; struct tm *tm; int year, month, day; time(&t); tm = gmtime(&t); year = (argc > 1) ? atoi(argv[1]) : 1900 + tm->tm_year; month = (argc > 2) ? atoi(argv[2]) : 1 + tm->tm_mon; day = (argc > 3) ? atoi(argv[3]) : tm->tm_mday; mjd = calc_mjd(year, month, day); printf("%.4d-%.2d-%.2d = MJD %ld\n", year, month, day, mjd); } // Convert Gregorian date to Modified Julian Date (MJD) long calc_mjd (long year, long month, long day) { if (month < 3) { if (month == 2) { day += 1; } month += 12; year -= 1; } day += (year * 365) + (year / 4) - (year / 100) + (year / 400); day += (489 * month) / 16; return day - 678973; }