必要に迫られて作った“ジュリアン通日(Julian date)”変換関数(C言語)です。
必要に迫られて作った“ジュリアン通日(Julian date)”変換関数(C言語)です。
long toJulianDate(int year, int month, int mday) { int a = (14 - month) / 12; int y = year + 4800 - a; int m = month + 12 * a - 3; return mday + y * 365 - 32045 + int((153 * m + 2) / 5) + int(y / 4) - int (y / 100) + int (y / 400); } void toYMD(long jdate, int& year, int &month, int &mday) { int j = jdate + 32044; int g = j / 146097; int dg = j % 146097; int c = (dg / 36524 + 1) * 3 / 4; int dc = dg - c * 36524; int b = dc / 1461; int db = dc % 1461; int a = (db / 365 + 1) * 3 / 4; int da = db - a * 365; int y = g * 400 + c * 100 + b * 4 + a; int m = (da * 5 + 308) / 153 - 2; int d = da - (m + 4) * 153 / 5 + 122; year = y - 4800 + (m + 2) / 12; month = (m + 2) % 12 + 1; mday = d + 1; }
JulianDateの7の剰余から曜日も求められます。 7で割った余りが0→月曜日,1→火曜日,…,6→日曜日,になります。