Javascript - Валидность даты
Как лучше узнать является ли дата правильной? Я знаю, как узнать является ли строка датой, но проблема в том, что на месяцах, которые содержат 30 дней этот алгоритм не работает при вводе даты, где день - 31.
То, что у меня сейчас есть:
yy = '2021';
mm = '02';
dd = '31';
const d = new Date(yy + '/' + mm + '/' + dd);
console.log(!isNaN(d.getTime()));
Ответы (2 шт):
Автор решения: NoSkill
→ Ссылка
Это конечно очень странно, что в JS до сих пор нет функции проверки валидности даты.
function isValidDate(Y, M, D) {
var d = new Date(Y, --M, D);
return Y == d.getFullYear() && M == d.getMonth() && D == d.getDate();
}
console.log('2020/02/28 - ' + isValidDate(2020, 2, 28));
console.log('2020/02/29 - ' + isValidDate(2020, 2, 29));
console.log('2020/02/30 - ' + isValidDate(2020, 2, 30));
console.log('2020/02/31 - ' + isValidDate(2020, 2, 31));
Автор решения: Qwertiy
→ Ссылка
function check(y, m, d) {
y = +y, --m, d = +d
var x = new Date(y, m, d)
return x.getFullYear() === y && x.getMonth() === m && x.getDate() === d
}
console.log(check("2021", "02", "31"))
console.log(check(2000, 2, 29))
console.log(check(2001, 2, 29))
console.log(check(2007, 1, 1))
console.log(check(2012, 12, 32))