double
julian(int nYear, int nMonth, double dDay) { double da, db; double dJD; if (nMonth < 3){ nMonth += 12; nYear--; } // Calc. body da = floor(nYear/100.0); db = 2.0 - da + floor(da / 4.0); dJD = floor(365.25 * nYear) + floor(30.6001 * (nMonth + 1)) + dDay + db + 1720994.5; if (dJD < 2299160.5){ dJD -= db; } return dJD; } |
void juian_date(double
dJD, int *nYear, int *nMonth, double *dDay) { int nY, nM; double da, db, dd; double dJDs = dJD + 0.5; double dJDi = floor(dJDs); double dJDf = dJDs - dJDi; if (dJDi > 2299160.0){ da = floor((dJDi - 1867216.25) / 36524.25); dJDi += (1.0 + da - floor(da / 4.0)); } db = dJDi + 1524.0; nY = (int)(floor((db - 122.1) / 365.25)); dd = db - floor(nY * 365.25); nM = (int)(floor(dd / 30.6001)); // Write Day *dDay = dd - floor(nM * 30.6001) + dJDf; // Write Month if (nM < 14){ *nMonth = nM - 1; }else{ *nMonth = nM - 13; } // Write Year if (*nMonth > 2){ *nYear = nY - 4716; }else{ *nYear = nY - 4715; } } |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
月 |
火 |
水 | 木 |
金 |
土 |
日 |
int jd_week(double dJD) { int nJD = (int)floor(dJD + 0.5); int nWeek = nJD % 7; if (nWeek < 0){ nWeek += 7; } return nWeek; } |