Расчет високосного года без функции високосного года

Мне нужно вычислить, является ли текущий год во время выполнения программы високосным (делится на 4, не делится на 100, но делится на 400), но без использования свойства DateTime.LeapYear. Кто-нибудь может что-нибудь подсказать?

// Код DateTimePicker

    private void dateTimePicker1_ValueChanged(object sender, EventArgs e)
    {
        DateTime now;
        int[] months = {31,28,31,30,31,30,31,31,30,31,30,31};
        now = DateTime.Now.Date;
        if (now.Year / 4 == 0 && now.Year / 400 == 0)
        {
            months(1) = 29;
        }
    }

person Jake    schedule 10.03.2014    source источник


Ответы (2)


Я думаю, это соответствует трем критериям:

var year = now.Year;

if (year % 4 == 00 && !(year % 100 == 0 && year % 400 != 0))
{
    ....
}
person Chris Spicer    schedule 10.03.2014

При проверке делимости используйте оператор модуля %. Также при изменении массива используйте индексаторы массива [], а не круглые скобки:

    if (now.Year % 4 == 0 && now.Year % 400 == 0)
    {
        months[1] = 29;
    }
person carlpett    schedule 10.03.2014