Как проверить дату ввода пользователя - последний день месяца, используя 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();
}