public static bool IsLeapMonth (int gyear, int month) { int goldenNumber = gyear % 19; bool chu = false; bool leap = false; double s = 0; for (int y = 0; y < goldenNumber; y++) { for (int l = 0, m = 1; m <= month; m++) { if (leap) { l += 30; leap = false; if (y == goldenNumber && m == month) return true; } else { l += chu ? 30 : 29; chu = !chu; s += 30.44; if (s - l > 29) leap = true; } } } return false; }
public override bool IsLeapDay(int year, int month, int day, int era) { int gregorianYear = M_CheckYMDEG(year, month, day, ref era); // every day in LeapMonth is a LeapDay. return(CCEastAsianLunisolarCalendar.IsLeapMonth(gregorianYear, month)); }