Javascript узнать количество дней в месяце

Каким образом можно определить количество дней в месяце? На javascript это сделать очень просто.

Дело в том, что объект Date в javascript очень гибок. Если создать дату с числом, которого нет в данном месяце (например 33 – ну его уж точно нигде нету ))), то месяц (или год) объекта увеличится.

Например, попробуем создать дату 33 в текущем месяце – июне (не забываем также, что месяцы в javascript нумеруются с нуля):

В итоге результирующей датой будет 3 июля 2009 г.

Используя данную гибкость языка, можно одной строчкой определить количество дней в месяце:

Или более красивый вариант:

  • can

    Ух ты, клёва. Сбросили всю ответственность на сам язык.

  • Макс

    > Или более красивый вариант:

    Более красивый выриант, к сожалению, не всегда работает

    alert(year + ‘ ‘ + month) // выведет 2009 1

    var dayofmonth = 32 – new Date(year, month, 32).getDate();

    var dayCount = new Date(year, month + 1, 0).getDate();

    alert(dayCount + ‘ ? ‘ + dayofmonth) // выведет 28 ? 30

    “Более красивый вариант” требует обязательное определение переменных var month и var year
    перед запросом. То есть передавать эти значения как аргумент функции уже не получится.

  • Victor

    А я то дурень, чтобы получить последний день текущего месяца делал setDate(31), проверял меняется ли месяц и если меняется, то ставил setDate(30). Плюс ещё проверку на февраль. Спасибо.
    Только чтобы year отработал в ff ставил 1900+year, а для IE 0+year.

  • На здоровье 🙂

  • Оказывается еще месяца начинаются с нуля, тоесть new Date(year, month, 0).getDate(); даст нам количество дней в месяце если представить что month – это нормальный номер месяца, начинающийся с первого (1)

  • Андрей

    Респект автору – просто и красиво!

  • Большое спасибо!