Проверьте, является ли строка значением даты

Как легко проверить, является ли значение действительной датой, любой известный формат даты допускается.

Например, у меня есть значения 10-11-2009, 10/11/2009, 2009-11-10T07:00: 00+0000 , которые все должны быть признаны в качестве значений даты, и значения 200 , 10 , 350 , которые не должны быть признаны в качестве значения даты. Какой самый простой способ проверить это, если это вообще возможно? Потому что метки времени также будут разрешены.

183
задан Thys 31 July 2016 в 22:44
поделиться

3 ответа

Проверьте данные 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();
0
ответ дан 1 September 2019 в 22:53
поделиться

Я создал находящееся в moment.js решение для этого для обнаружения ISO 8601, RFC 2822 и локальных форматов, не имея необходимость указывать строку парсинга (который я всегда не хочу вводить "стандартный" формат.)...

https://github.com/patarapolw/valid-moment

0
ответ дан 23 November 2019 в 06:00
поделиться

Ниже улучшенный метод, который использует Date.parse(), но проверяет, не является ли вход числом:

function isDate(s) {
    if(isNaN(s) && !isNaN(Date.parse(s))
        return true;
    else return false;
}

Примечание: Date.parse () проанализирует числа: например Date.parse(1) возвратит дату. Таким образом, здесь мы проверяем, не ли s число, если это - дата.

-1
ответ дан 23 November 2019 в 06:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: