コード例 #1
0
 public DateSystem(int hour, int day, DateMonthName month, int year)
 {
     dateHour    = hour;
     dateDay     = day;
     dateMonth   = month;
     dateYear    = year;
     dateWeekDay = GetWeakDay(day, month, year);
 }
コード例 #2
0
    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;
    }
コード例 #3
0
    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);
    }