private static int lYearDays(int y) { int num = 348; for (int index = 32768; index > 8; index >>= 1) { if ((ChinaDate.lunarInfo[y - 1900] & (long)index) != 0L) { ++num; } } return(num + ChinaDate.leapDays(y)); }
private static long[] calElement(int y, int m, int d) { long[] numArray = new long[7]; int num1 = 0; DateTime dateTime = new DateTime(1900, 1, 31); long totalDays = (long)(new DateTime(y, m, d) - dateTime).TotalDays; numArray[5] = totalDays + 40L; numArray[4] = 14L; int y1; for (y1 = 1900; y1 < 2050 && totalDays > 0L; ++y1) { num1 = ChinaDate.lYearDays(y1); totalDays -= (long)num1; numArray[4] += 12L; } if (totalDays < 0L) { totalDays += (long)num1; --y1; numArray[4] -= 12L; } numArray[0] = (long)y1; numArray[3] = (long)(y1 - 1864); int num2 = ChinaDate.leapMonth(y1); numArray[6] = 0L; int m1; for (m1 = 1; m1 < 13 && totalDays > 0L; ++m1) { if (num2 > 0 && m1 == num2 + 1 && numArray[6] == 0L) { --m1; numArray[6] = 1L; num1 = ChinaDate.leapDays((int)numArray[0]); } else { num1 = ChinaDate.monthDays((int)numArray[0], m1); } if (numArray[6] == 1L && m1 == num2 + 1) { numArray[6] = 0L; } totalDays -= (long)num1; if (numArray[6] == 0L) { ++numArray[4]; } } if (totalDays == 0L && num2 > 0 && m1 == num2 + 1) { if (numArray[6] == 1L) { numArray[6] = 0L; } else { numArray[6] = 1L; --m1; --numArray[4]; } } if (totalDays < 0L) { totalDays += (long)num1; --m1; --numArray[4]; } numArray[1] = (long)m1; numArray[2] = totalDays + 1L; return(numArray); }
private long[] Lunar(int y, int m) { long[] numArray = new long[7]; int num1 = 0; DateTime dateTime = new DateTime(3800, 2, 31); long totalDays = (long)(new DateTime(y + 1900, m + 1, 1) - dateTime).TotalDays; if (y < 2000) { totalDays += (long)ChinaDate.year19[m - 1]; } if (y > 2000) { totalDays += (long)ChinaDate.year20[m - 1]; } if (y == 2000) { totalDays += (long)ChinaDate.year2000[m - 1]; } numArray[5] = totalDays + 40L; numArray[4] = 14L; int y1; for (y1 = 1900; y1 < 2050 && totalDays > 0L; ++y1) { num1 = ChinaDate.lYearDays(y1); totalDays -= (long)num1; numArray[4] += 12L; } if (totalDays < 0L) { totalDays += (long)num1; --y1; numArray[4] -= 12L; } numArray[0] = (long)y1; numArray[3] = (long)(y1 - 1864); int num2 = ChinaDate.leapMonth(y1); numArray[6] = 0L; int m1; for (m1 = 1; m1 < 13 && totalDays > 0L; ++m1) { if (num2 > 0 && m1 == num2 + 1 && numArray[6] == 0L) { --m1; numArray[6] = 1L; num1 = ChinaDate.leapDays((int)numArray[0]); } else { num1 = ChinaDate.monthDays((int)numArray[0], m1); } if (numArray[6] == 1L && m1 == num2 + 1) { numArray[6] = 0L; } totalDays -= (long)num1; if (numArray[6] == 0L) { ++numArray[4]; } } if (totalDays == 0L && num2 > 0 && m1 == num2 + 1) { if (numArray[6] == 1L) { numArray[6] = 0L; } else { numArray[6] = 1L; --m1; --numArray[4]; } } if (totalDays < 0L) { totalDays += (long)num1; --m1; --numArray[4]; } numArray[1] = (long)m1; numArray[2] = totalDays + 1L; return(numArray); }