java日期工具类DateUtil-续二(三)

2014-11-24 10:53:08 · 作者: · 浏览: 2
for (int i = 0x8000; i > 0x8; i >>= 1) {
// 每个大月累加一天
daysInLunarYear += ((SimpleLunarCalendar.lunarInfo[lunarYear - 1900] & i) != 0) 1 : 0;
}
// 加上闰月天数
daysInLunarYear += SimpleLunarCalendar.getLunarLeapDays(lunarYear);
return daysInLunarYear;
}
/**
* 获取某农历年闰月的总天数
* @param lunarYear 农历年份
* @return 该农历年闰月的总天数,没有闰月返回0
*/
private static int getLunarLeapDays(int lunarYear) {
// 下一年最后4bit为1111,返回30(大月)
// 下一年最后4bit不为1111,返回29(小月)
// 若该年没有闰月,返回0
return SimpleLunarCalendar.getLunarLeapMonth(lunarYear) > 0 ((SimpleLunarCalendar.lunarInfo[lunarYear - 1899] & 0xf) == 0xf 30 : 29) : 0;
}
/**
* 获取某农历年闰月月份
* @param lunarYear 农历年份
* @return 该农历年闰月的月份,没有闰月返回0
*/
private static int getLunarLeapMonth(int lunarYear) {
// 匹配后4位
int leapMonth = SimpleLunarCalendar.lunarInfo[lunarYear - 1900] & 0xf;
// 若最后4位全为1或全为0,表示没闰
leapMonth = (leapMonth == 0xf 0 : leapMonth);
return leapMonth;
}
/**
* 获取某农历年某农历月份的总天数
* @param lunarYear 农历年份
* @param lunarMonth 农历月份
* @return 该农历年该农历月的总天数
*/
private static int getLunarMonthDays(int lunarYear, int lunarMonth) {
// 匹配前12位代表的相应农历月份的大小月,大月30天,小月29天
int daysInLunarMonth = ((SimpleLunarCalendar.lunarInfo[lunarYear - 1900] & (0x10000 >> lunarMonth)) != 0) 30 : 29;
return daysInLunarMonth;
}
/**
* 返回指定数字的农历年份表示字符串
* @param lunarYear 农历年份(数字,0为甲子)
* @return 农历年份字符串
*/
private static String getLunarYearString(int lunarYear) {
String lunarYearString = "";
String year = String.valueOf(lunarYear);
for (int i = 0; i < year.length(); i++) {
char yearChar = year.charAt(i);
int index = Integer.parseInt(String.valueOf(yearChar));
lunarYearString += lunarString1[index];
}
return lunarYearString;
}
/**
* 返回指定数字的农历月份表示字符串
* @param lunarMonth 农历月份(数字)
* @return 农历月份字符串 (例:正)
*/
private static String getLunarMonthString(int lunarMonth) {
String lunarMonthString = "";
if (lunarMonth == 1) {
lunarMonthString = SimpleLunarCalendar.lunarString2[4];
} else {
if (lunarMonth > 9)
lunarMonthString += SimpleLunarCalendar.lunarString2[1];
if (lunarMonth % 10 > 0)
lunarMonthString += SimpleLunarCalendar.lunarString1[lunarMonth % 10];
}
return lunarMonthString;
}
/**
* 返回指定数字的农历日表示字符串
* @param lunarDay 农历日(数字)
* @return 农历日字符串 (例: 廿一)
*/
private static String getLunarDayString(int lunarDay) {
if (lunarDay < 1 || lunarDay > 30)
return "";
int i1 = lunarDay / 10;
int i2 = lunarDay % 10;
String c1 = SimpleLunarCalendar.lunarString2[i1];
String c2 = SimpleLunarCalendar.lunarString1[i2];
if (lunarDay < 11)
c1 = SimpleLunarCalendar.lunarString2[0];
if (i2 == 0)
c2 = SimpleLunarCalendar.lunarString2[1];
return c1 + c2;
}
/**
* 取农历年生肖
* @return 农历年生肖(例:龙)
*/
public String getAnimalS