Как проверить дату, если это последний день месяца с javascript?

Как проверить дату ввода пользователя - последний день месяца, используя javascript?

Ответ 1

(Обновление: см. Последний пример внизу, но остальное оставлено в качестве фона.)

Вы можете добавить день к экземпляру Date и посмотреть, изменится ли месяц (поскольку объект Date JavaScript Date исправляет недопустимые значения дня месяца), например:

function isLastDay(dt) {
    var test = new Date(dt.getTime()),
        month = test.getMonth();

    test.setDate(test.getDate() + 1);
    return test.getMonth() !== month;
}

Бесплатный живой пример

... или, как указал paxdiablo, вы можете проверить итоговый день месяца, который, вероятно, быстрее (на один вызов функции меньше) и определенно немного короче:

function isLastDay(dt) {
    var test = new Date(dt.getTime());
    test.setDate(test.getDate() + 1);
    return test.getDate() === 1;
}

Еще один бесплатный пример из жизни

Вы можете добавить больше логики, чтобы избежать создания временного объекта даты, если вам нравится, так как он действительно нужен только в феврале, а остальное - просто просмотр таблицы, но преимущество обоих вышеупомянутых заключается в том, что они откладывают всю математику даты до Движок JavaScript. Создание объекта не будет достаточно дорогим для беспокойства.


... и наконец: поскольку спецификация JavaScript требует (раздел 15.9.1.1), чтобы день был ровно 86 400 000 миллисекунд (когда в действительности дни меняются по длине немного), мы можем сделать вышеупомянутое еще короче, добавив день, так как:

function isLastDay(dt) {
    return new Date(dt.getTime() + 86400000).getDate() === 1;
}

Последний бесплатный пример

Ответ 2

Браузеры идентифицируют день 0 как последний день предыдущего месяца.

var month = 0; // January
var d = new Date(2008, month + 1, 0);
alert(d); // last day in January

как показано здесь: Рассчитать последний день месяца в javascript

вы можете просто использовать месяц, добавленный пользователем + 1, с днем ​​= 0, чтобы проверить, вставил ли он последний день месяца.

Ответ 3

Предположим, что вы получили:

var month = getMonthFromUserInput();
var year = getYearFromUserInput();

Это даст последний день этого месяца

new Date((new Date(year , month , 1)) -1 )

Помните, что месяц 0 - январь

Ответ 4

Это сработало.

var   lastday   =   new   Date(new   Date().getFullYear(),new   Date().getMonth()+1,0).getDate();

Надеюсь помочь вам.

Ответ 5

function isLastDayOfMonth(date){
    return date.getDate() == new Date(date.getFullYear(),date.getMonth()+1,0).getDate();
}