Вы строите дату, используя new Date(year,index,1)
, которая дает, например, 1 марта, если вы передаете "March"
.Затем вы вычитаете один день, чтобы получить 28 февраля.Тогда вы говорите, что марта имеет 28 дней.Очевидно, это неправильный вывод.
Вам нужно построить, используя:
new Date(year, index + 1, 1);
// so, build e.g. 1 April when "March" is passed, then
// subtract one to get last day of March