Sunday, March 22, 2009

Високосный год и JavaScript

Иногда возникает необходимость определить, является ли введенный/выбранный (например, из списка) пользователем год високосным.
В C# все просто:
bool isLeap = DateTime.IsLeapYear(1996);

Но, в JavaScript такого нет, к сожалению. Но вискосный год или нет, можно определить, используя следующую функцию:

function IsLeapYear(year) {
    if(year%4 == 0) {
        if(year%100 == 0) {
            if(year%400 == 0) {
                return true;
            }
            else
                return false;
        }
        else
            return true;
    }
    return false;
}

Анализируя функцию, возникает вопрос: а не проще ли сделать year%4 == 0 и получить високосный год. Ответ: нет. Алгоритм вычисления высокосного года немного сложнее (поблагодарим Папу Георгия ХIII). Год считается високосным только в том случае если он делится на 4 без остатка (это мы знаем со школы), но при этом не делится на 100 без остатка, или, если делится на 100, должен делится и на 400 без остатка.

Happy coding...

No comments :

Post a Comment