Каким образом можно определить количество дней в месяце? На javascript это сделать очень просто.
Дело в том, что объект Date в javascript очень гибок. Если создать дату с числом, которого нет в данном месяце (например 33 - ну его уж точно нигде нету ))), то месяц (или год) объекта увеличится.
Например, попробуем создать дату 33 в текущем месяце - июне (не забываем также, что месяцы в javascript нумеруются с нуля):
var june = new Date(2009, 5, 33);
В итоге результирующей датой будет 3 июля 2009 г.
Используя данную гибкость языка, можно одной строчкой определить количество дней в месяце:
var dayCount = 32 - new Date(year, month, 32).getDate();
Или более красивый вариант:
var dayCount = new Date(year, month + 1, 0).getDate();
Июнь 2nd, 2009 at 8:46 пп
Ух ты, клёва. Сбросили всю ответственность на сам язык.
Август 27th, 2009 at 5:48 пп
> Или более красивый вариант:
Более красивый выриант, к сожалению, не всегда работает
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
перед запросом. То есть передавать эти значения как аргумент функции уже не получится.
Октябрь 30th, 2009 at 11:57 дп
А я то дурень, чтобы получить последний день текущего месяца делал setDate(31), проверял меняется ли месяц и если меняется, то ставил setDate(30). Плюс ещё проверку на февраль. Спасибо.
Только чтобы year отработал в ff ставил 1900+year, а для IE 0+year.
Октябрь 30th, 2009 at 2:16 пп
На здоровье :)