public DateSystem(int hour, int day, DateMonthName month, int year) { dateHour = hour; dateDay = day; dateMonth = month; dateYear = year; dateWeekDay = GetWeakDay(day, month, year); }
public void ChangeMonth(int months) { int targetMonth = (int)dateMonth + months; if (targetMonth > 11) { int restingMonths = targetMonth % 12; int monthsToYears = (targetMonth - restingMonths) / 12; targetMonth = restingMonths; ChangeYear(monthsToYears); } dateMonth = (DateMonthName)targetMonth; }
public DateWeekDayName GetWeakDay(int day, DateMonthName month, int year) { //get previous month days and add it int previousMonthDays = 0; switch (month) { case DateMonthName.February: previousMonthDays = 31; break; case DateMonthName.March: previousMonthDays = 59; break; case DateMonthName.April: previousMonthDays = 90; break; case DateMonthName.May: previousMonthDays = 120; break; case DateMonthName.June: previousMonthDays = 151; break; case DateMonthName.July: previousMonthDays = 181; break; case DateMonthName.August: previousMonthDays = 212; break; case DateMonthName.September: previousMonthDays = 243; break; case DateMonthName.October: previousMonthDays = 273; break; case DateMonthName.November: previousMonthDays = 304; break; case DateMonthName.December: previousMonthDays = 334; break; } //get get if current year is a leap year int leapYearOffset = year % 4; if (leapYearOffset == 0 && (int)month > 1) { previousMonthDays += 1; } //we dont count the current year for our days count, since it did not end yet and it is calculated above year -= 1; leapYearOffset = year % 4; //get leap years days offset and add it int leapYearDays = (year - leapYearOffset) / 4; int totalDays = day + ((year) * 365) + leapYearDays + previousMonthDays; totalDays %= 7; DateWeekDayName weekDay = (DateWeekDayName)totalDays; return(weekDay); }