Как легко проверить, является ли значение действительной датой, любой известный формат даты допускается.
Например, у меня есть значения 10-11-2009
, 10/11/2009
, 2009-11-10T07:00: 00+0000
, которые все должны быть признаны в качестве значений даты, и значения 200
, 10
, 350
, которые не должны быть признаны в качестве значения даты. Какой самый простой способ проверить это, если это вообще возможно? Потому что метки времени также будут разрешены.
Проверьте данные ISO (ES6 функциональный путь)
const isISODate = date =>
new Date(date) !== "Invalid Date"
&& !isNaN(new Date(date))
&& date == new Date(date).toISOString();
console.log(
isISODate("2018-08-01T18:30:00.000Z")
);
Одна строка
const isISODate = date => new Date(date) !== "Invalid Date" && !isNaN(new Date(date)) && date == new Date(date).toISOString();
Я создал находящееся в moment.js решение для этого для обнаружения ISO 8601, RFC 2822 и локальных форматов, не имея необходимость указывать строку парсинга (который я всегда не хочу вводить "стандартный" формат.)...
Ниже улучшенный метод, который использует Date.parse()
, но проверяет, не является ли вход числом:
function isDate(s) {
if(isNaN(s) && !isNaN(Date.parse(s))
return true;
else return false;
}
Примечание: Date.parse () проанализирует числа: например Date.parse(1)
возвратит дату. Таким образом, здесь мы проверяем, не ли s
число, если это - дата.