//C++ TO C# CONVERTER NOTE: C# does not allow default values for parameters. Overloaded methods are inserted above. //ORIGINAL LINE: static CAACalendarDate DateOfPesach(int Year, bool bGregorianCalendar = true) public static CAACalendarDate DateOfPesach(int Year, bool bGregorianCalendar) { //What will be the return value CAACalendarDate Pesach = new CAACalendarDate(); int C = CAADate.INT(Year / 100.0); int S = CAADate.INT((3 * C - 5) / 4.0); if (bGregorianCalendar == false) { S = 0; } int A = Year + 3760; int a = (12 * Year + 12) % 19; int b = Year % 4; double Q = -1.904412361576 + 1.554241796621 * a + 0.25 * b - 0.003177794022 * Year + S; int INTQ = CAADate.INT(Q); int j = (INTQ + 3 * Year + 5 * b + 2 - S) % 7; double r = Q - INTQ; if ((j == 2) || (j == 4) || (j == 6)) { Pesach.Day = INTQ + 23; } else if ((j == 1) && (a > 6) && (r >= 0.632870370)) { Pesach.Day = INTQ + 24; } else if ((j == 0) && (a > 11) && (r >= 0.897723765)) { Pesach.Day = INTQ + 23; } else { Pesach.Day = INTQ + 22; } if (Pesach.Day > 31) { Pesach.Month = 4; Pesach.Day -= 31; } else { Pesach.Month = 3; } Pesach.Year = A; return(Pesach); }
//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); }
public static CAACalendarDate JulianToMoslem(int Year, int Month, int Day) { //What will be the return value CAACalendarDate MoslemDate = new CAACalendarDate(); int W = (Year % 4) == 0 ? 2 : 1; int N = CAADate.INT((275 * Month) / 9.0) - (W * CAADate.INT((Month + 9) / 12.0)) + Day - 30; int A = Year - 623; int B = CAADate.INT(A / 4.0); int C = A % 4; double C1 = 365.2501 * C; int C2 = CAADate.INT(C1); if ((C1 - C2) > 0.5) { C2++; } int Ddash = 1461 * B + 170 + C2; int Q = CAADate.INT(Ddash / 10631.0); int R = Ddash % 10631; int J = CAADate.INT(R / 354.0); int K = R % 354; int O = CAADate.INT((11 * J + 14) / 30); int H = 30 * Q + J + 1; int JJ = K - O + N - 1; if (JJ > 354) { int CL = H % 30; int DL = (11 * CL + 3) % 30; if (DL < 19) { JJ -= 354; H++; } else { JJ -= 355; H++; } if (JJ == 0) { JJ = 355; H--; } } int S = CAADate.INT((JJ - 1) / 29.5); MoslemDate.Month = 1 + S; MoslemDate.Day = CAADate.INT(JJ - 29.5 * S); MoslemDate.Year = H; if (JJ == 355) { MoslemDate.Month = 12; MoslemDate.Day = 30; } return(MoslemDate); }