我的评论

int yearCyl, monCyl, dayCyl, hourCyl
是为了传入到 final private static String cyclicalm(int num)
里面分别求出年,月,日,时辰的天干地支
int offset = (int) ((cal.getTime().getTime() - baseDate.getTime()) / 86400000L);
dayCyl = offset + 40;
monCyl = 14;
下面增加了这句算时辰的步长
hourCyl = (int) ((cal.getTime().getTime() - baseDate.getTime() + 3300000L) / 7200000L) ;

toString修改成下面这样,呵呵,这可以输出年月日时的天干地支,也就是所谓的八字了,大伙看看正确不?呵呵,
public String toString() {
return year + "年" + (leap ? "闰" : "") + chineseNumber[month - 1] + "月" + getChinaDayString(day)
+" "+ cyclicalm(yearCyl)+"年"+ cyclicalm(monCyl)+"月"+ cyclicalm(dayCyl)+"日" + cyclicalm(hourCyl)+"时辰";
}