// 传回农历 y年的总天数 public int yearDays(int y) { int i, sum = 348; for (i = 0x8000; i > 0x8; i >>= 1) { if ((lunarInfo[y - 1900] & i) != 0) { sum += 1; } } return (sum + leapDays(y)); }
// 传回农历 y年闰月的天数 public int leapDays(int y) { if (leapMonth(y) != 0) { if ((lunarInfo[y - 1900] & 0x10000) != 0) { return 30; } else { return 29; } } else { return 0; } }
// 传回农历 y年闰哪个月 1-12 , 没闰传回 0 public int leapMonth(int y) { return (int) (lunarInfo[y - 1900] & 0xf); }
// 传回农历 y年m月的总天数 public int monthDays(int y, int m) { if ((lunarInfo[y - 1900] & (0x10000 >> m)) == 0) { return 29; } else { return 30; } }
// 传回农历年 public String getChinaYearString() { int num = chineseyear - 1900 + 36; return (Gan[num % 10] + Zhi[num % 12]); }
// 当月有多少天 public int getday() { Calendar calendar = Calendar.getInstance(); calendar.set(year, month - 1, 1); int day = 0; if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) { day = 31; } if (month == 4 || month == 6 || month == 9 || month == 11) { day = 30; } if (month == 2) { if ((year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0)) { day = 29; } else { day = 28; } } return day; }
// 返回阳历日期数组 public String[] getCalendar() { int weekDay = getweekDay(); int day = getday(); String[] days = new String[weekDay + day];// 空数据个数加当月天数,即为日期数组的长度 for (int i = 0; i < weekDay; i++) { days[i] = ""; } for (int i = weekDay, n = 1; i < weekDay + day; i++) { days[i] = String.valueOf(n); n++; } return days; }
// 返回农历日期数组 public String[] getchineseCalendar() { getfirstday(1); int weekDay = getweekDay(); int day = getday(); String[] days = new String[weekDay + day]; for (int i = 0; i < weekDay; i++) { days[i] = ""; } System.arraycopy(chineseDay, chineseday, days, weekDay, monthDays(chineseyear, chinesemonth) - chineseday); System.arraycopy(chineseDay, 0, days, monthDays(chineseyear, chinesemonth) - chineseday + weekDay, day - (monthDays(chineseyear, chinesemonth) - chineseday));
return days; }
// 返回包含节日的农历日期数组 public String[] getchineseCalendar_festival() { String[] days = getchineseCalendar(); int weekDay = getweekDay(); for (int i = 0; i < days.length; i++) { if ("初一".equals(days[i])) { getfirstday(i); days[i] = getChinaMonthString(); } if ("正月".equals(days[i])) { days[i] = "春节"; } if ("正月".equals(getChinaMonthString()) && "十五".equals(days[i])) { days[i] = "元宵"; } if ("五月".equals(getChinaMonthString()) && "初五".equals(days[i])) { days[i] = "端午"; } if ("七月".equals(getChinaMonthString()) && "初七".equals(days[i])) { days[i] = "七夕"; } if ("七月".equals(getChinaMonthString()) && "十五".equals(days[i])) { days[i] = "中元"; } if ("八月".equals(getChinaMonthString()) && "十五".equals(days[i])) { days[i] = "中秋"; } if ("九月".equals(getChinaMonthString()) && "初九".equals(days[i])) { days[i] = "重阳"; } if ("腊月".equals(getChinaMonthString()) && "初八".equals(days[i])) { days[i] = "腊八"; } if ("腊月".equals(getChinaMonthString()) && "三十".equals(days[i])) { days[i] = "除夕"; } if (getmonth() == 1 && i == (weekDay + 0)) { days[i] = "元旦"; } if (getmonth() == 2 && i == (weekDay + 13)) { days[i] = "情人"; } if (getmonth() == 3 && i == (weekDay + 7)) { days[i] = "妇女"; } if (getmonth() == 3 && i == (weekDay + 11)) { days[i] = "植树"; } if (getmonth() == 5 && i == (weekDay + 0)) { days[i] = "劳动"; } if (getmonth() == 5 && i == (weekDay + 3)) { days[i] = "青年"; } if (getmonth() == 6 && i == (weekDay + 0)) { days[i] = "儿童"; } if (getmonth() == 7 && i == (weekDay + 0)) { days[i] = "建党"; } if (getmonth() == 8 && i == (weekDay + 0)) { days[i] = "建军"; } if (getmonth() == 9 && i == (weekDay + 9)) { days[i] = "教师"; } if (getmonth() == 10 && i == (weekDay + 0)) { days[i] = "国庆"; } if (getmonth() == 12 && i == (weekDay + 24)) { days[i] = "圣诞"; } } Calendar cal = Calendar.getInstance(); cal.set(Calendar.YEAR, year); cal.set(Calendar.MONTH, 5 - 1); int sundays = 0; for (int i = 1; i <= getday(); i++) { cal.set(Calendar.DATE, i); if (cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) { sundays++; if (sundays == 2) { if (getmonth() == 5) { days[weekDay + i - 1] = "母亲"; } break; } } } cal.set(Calendar.MONTH, 6 - 1); sundays = 0; for (int i = 1; i <= getday(); i++) { cal.set(Calendar.DATE, i); if (cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) { sundays++; if (sundays == 3) { if (getmonth() == 6) { days[weekDay + i - 1] = "父亲"; } break; } } } return days; }