private void calChinaDate() {
		@SuppressWarnings("unused")
		int yearCyl, monCyl, dayCyl;
		int leapMonth = 0;

		Date baseDate = null;
		try {
			baseDate = chineseDateFormat.parse("1900131");
		} catch (ParseException e) {
			e.printStackTrace(); // To change body of catch statement use
									// Options | File Templates.
		}
		// 1900131
		int offset = (int) ((calendar.getTime().getTime() - baseDate.getTime()) / 86400000L);
		dayCyl = offset + 40;
		monCyl = 14;
		// offsetȥÿũ
		// 㵱ũڼ
		// iսũ
		// offsetǵĵڼ
		int iYear, daysOfYear = 0;
		for (iYear = 1900; iYear < 2050 && offset > 0; iYear++) {
			daysOfYear = yearDays(iYear);
			offset -= daysOfYear;
			monCyl += 12;
		}
		if (offset < 0) {
			offset += daysOfYear;
			iYear--;
			monCyl -= 12;
		}
		// ũ
		year = iYear;
		yearCyl = iYear - 1864;
		leapMonth = leapMonth(iYear); // ĸ,1-12
		leap = false;
		// õoffset,ȥÿ(ũ)Ǳµĵڼ
		int iMonth, daysOfMonth = 0;
		for (iMonth = 1; iMonth < 13 && offset > 0; iMonth++) {
			// 
			if (leapMonth > 0 && iMonth == (leapMonth + 1) && !leap) {
				--iMonth;
				leap = true;
				daysOfMonth = leapDays(year);
			} else
				daysOfMonth = monthDays(year, iMonth);
			offset -= daysOfMonth;
			// 
			if (leap && iMonth == (leapMonth + 1))
				leap = false;
			if (!leap)
				monCyl++;
		}
		// offsetΪ0ʱҸղż·£ҪУ
		if (offset == 0 && leapMonth > 0 && iMonth == leapMonth + 1) {
			if (leap) {
				leap = false;
			} else {
				leap = true;
				--iMonth;
				--monCyl;
			}
		}
		// offsetС0ʱҲҪУ
		if (offset < 0) {
			offset += daysOfMonth;
			--iMonth;
			--monCyl;
		}
		month = iMonth;
		day = offset + 1;
	}