public void setPastDays(long days) { pastDays = days; year = (int)(days / 365); long tmpDays = year * 365 + (year / 4) - (year / 100) + (year / 400); while (days <= tmpDays) { year--; tmpDays = year * 365 + (year / 4) - (year / 100) + (year / 400); } days -= tmpDays; year++; for (month = 0; days > 0; days -= monthDays[month++]) { if (month == 1 && isLeapYear(year)) { days--; } } date = (int)days + monthDays[month - 1]; if (month == 2 && isLeapYear(year)) { date++; } }