示例#1
0
//Static methods

    //////////////////////////// Implementation ///////////////////////////////////

    public static CAACalendarDate MoslemToJulian(int Year, int Month, int Day)
    {
        //What will be the return value
        CAACalendarDate JulianDate = new CAACalendarDate();

        int N  = Day + CAADate.INT(29.5001 * (Month - 1) + 0.99);
        int Q  = CAADate.INT(Year / 30.0);
        int R  = Year % 30;
        int A  = CAADate.INT((11 * R + 3) / 30.0);
        int W  = 404 * Q + 354 * R + 208 + A;
        int Q1 = CAADate.INT(W / 1461.0);
        int Q2 = W % 1461;
        int G  = 621 + 4 * CAADate.INT(7 * Q + Q1);
        int K  = CAADate.INT(Q2 / 365.2422);
        int E  = CAADate.INT(365.2422 * K);
        int J  = Q2 - E + N - 1;
        int X  = G + K;

        int XMod4 = X % 4;

        if ((J > 366) && (XMod4 == 0))
        {
            J -= 366;
            X++;
        }
        if ((J > 365) && (XMod4 > 0))
        {
            J -= 365;
            X++;
        }

        JulianDate.Year = X;
        CAADate.DayOfYearToDayAndMonth(J, CAADate.IsLeap(X, false), ref JulianDate.Day, ref JulianDate.Month);

        return(JulianDate);
    }