momentjs, чтобы проверить, присутствует ли значение времени или нет

#javascript #momentjs

Вопрос:

Как мы можем проверить с помощью moment JS, присутствует ли у значения время или нет.

например, 2021-01-01 // нет времени. 2021-02-05 01:03:11 вечера //время настоящее.

Комментарии:

1. Длина строки даты без времени равна 10… это помогает? Не уверен, что этот момент-правильный инструмент для этого. Использование регулярных выражений может иметь больше смысла. Каков ваш фактический вариант использования?

2. да, на всякий случай, если что-нибудь встроено в momentjs. вместо строковой операции ? Вариант использования, основанный на дате, форматирует определенный формат, и если его дата-время, то форматируйте другим способом.

3. Вероятно, нет, потому что, когда вы передаете строку в moment, он рекомендует вам также передать формат также, как moment('2021-01-01', 'YYYY-MM-DD')

4. Есть место, где вы можете проверить: momentjs.com/docs

5. ОК. Затем я должен проверить длину строки способом.

Ответ №1:

Вы можете анализировать пользовательские форматы дат с помощью Momentjs.

Ваш парсер должен быть YYYY-DD-MM HH:mm:s A

В Moment есть функция проверки допустимости определенного объекта moment, поэтому в сочетании с этими двумя вещами мы можем сделать что-то вроде:

 if(moment('2019-02-05 01:03:11 PM', 'YYYY-DD-MM HH:mm:s A').isValid())
 

Если строка даты и времени указана в правильном формате и moment успешно инициализирует свой объект, isValid функция вернет значение true, и, таким образом, вы уверены, что и дата, и время переданы в правильном формате.

Для получения дополнительной информации о строках пользовательского формата даты и времени вы можете проверить это: https://thecodebarbarian.com/formatting-javascript-dates-with-moment-js.html

Редактировать: Я только что увидел в комментариях к вашему посту, что вы планируете проверять длину строки. Не делай этого. Это небезопасно, и это может (и будет) очень часто приводить к ложным срабатываниям. Способ, которым я опубликовал, намного лучше, потому что он будет принимать только определенный формат, и это должна быть действительная дата.