Одной из общих проблем, с которыми сталкиваются начинающие разработчики на JavaScript, является определение недопустимых дат. Например, когда создается новый экземпляр даты с использованием строки, которая не может быть преобразована в дату, результатом будет объект даты, который не является действительным.
var d = new Date("не дата");
console.log(d.toString()); // выводит 'Invalid Date'
console.log(typeof d); // выводит 'object'
console.log(d instanceof Date); // выводит 'true'
Как видно из примера, даже если дата недействительна, она все равно является объектом и экземпляром даты. Это может привести к некорректной работе кода, если не проверять дату на действительность.
Один из способов определения, является ли дата действительной, — использовать метод Date.parse, который позволяет разобрать строку даты и вернуть время в миллисекундах или NaN, если строка не может быть преобразована в дату. Однако этот метод работает только со строками, а не с экземплярами даты.
function isValidDate(d) {
return !isNaN(Date.parse(d));
}
console.log(isValidDate("2021-12-31")); // выводит 'true'
console.log(isValidDate("не дата")); // выводит 'false'
Если необходимо работать с экземплярами даты, можно проверить значение времени даты, которое также будет NaN для недопустимых дат. Это поведение описано в стандарте ECMA-262.
function isValidDate(d) {
if (!(d instanceof Date)) {
return false;
}
return !isNaN(d.getTime());
}
console.log(isValidDate(new Date("2021-12-31"))); // выводит 'true'
console.log(isValidDate(new Date("не дата"))); // выводит 'false'
Таким образом, можно определить, является ли дата действительной, проверив, является ли она экземпляром даты и не равно ли ее значение времени NaN.
Перейти в телеграм, чтобы получить результаты теста






Забрать
Добавить комментарий