-1

よろしくお願いします!

次のコード スニペットは、特定のユリウス日の年、月、日を提供する関数です。

ここにある定数の意味を教えてください。このコードはネット全体で見つけることができますが、ここで使用されるデフォルト値について誰も説明していません。また、関数が何をするかを誰かが説明できる場合。

JD に渡す値が 2456447 だとします。

VOID GetGregorianDate(LONG JD, PWORD Year, PWORD Month, PWORD Day)
{
    LONG j, y, d, m;
    j = JD - 1721119;            //what is this value - 1721119 (may be related to day.. but how ?)
    y = (4 * j - 1) / 146097;    //what is this value - 146097 (may be related to year.. but how ?)
    j = 4 * j - 1 - 146097 * y;
    d = j / 4;
    j = (4 * d + 3) / 1461;        // ?
    d = 4 * d + 3 - 1461 * j;
    d = (d + 4) / 4;
    m = (5 * d - 3) / 153;        // ?
    d = 5 * d - 3 - 153 * m;
    d = (d + 5) / 5;
    y = 100 * y + j;
    if (m < 10)
    {
        m = m + 3;
    }
    else 
    {
        m = m - 9;
        y = y + 1;
    }

    *Year   = (WORD) y;
    *Month  = (WORD) m;
    *Day    = (WORD) d;
}
4

1 に答える 1