JD ymd2jd(YMD ymd) { JD jd; int m, y; y = ymdGetYear(ymd); m = ymdGetMonth(ymd); /* normalize the month */ if (m < 1) { y -= (1 - m) / 12; m = (m % 12) + 12; } if (m > 12) { y += (m - 1) / 12; m = ((m - 1) % 12) + 1; } jdSetDay(jd, gcal2j(y, m, 0)); jdIncDay(jd, ymdGetDay(ymd)); /* now the fractional day... */ jd.hms = ymd.hms; /* julian days start 12 hours after civil days */ jdDecHours(jd, 12.0); return(jd); }
int main(){ JD jd; double t =0.0; #define L 2 double j[L][4] = { {2451545.0, 10.0, 0.0, 0.0}, {2433142.678, 10.123, -10.345, 1.04} }; for(int i=0; i < L; i++){ jdSetDay(jd, j[i][0]); jdSetHours(jd, j[i][1]); jdSetMinutes(jd, j[i][2]); jdSetSeconds(jd, j[i][3]); printf("%16.8f %8.4f %8.4f %8.4f\n", jdGetDay(jd), jdGetHours(jd), jdGetMinutes(jd), jdGetSeconds(jd)); t = jd2y(jd); printf("%16.8f\n\n", t); } return 0; }