Как справиться с предупреждением об устаревании в momentjs
Я хочу использовать momentjs для проверки недопустимых строк даты/времени:
var invalid = '2017-03-18 23;00;00';
if (moment(invalid).isValid()) {
return 'valid date'
}
Это (правильно) выбрасывает stacktrace со знакомым предупреждением "Предупреждение об отставке": данное значение не указано в признанном формате RFC2822 или ISO... "
Но даже если добавить try/catch:
try {
var invalid = '2017-03-18 23;00;00';
if (moment(invalid).isValid()) {
return 'valid date'
}
catch (err) {
throw Error ('invalid date format');
}
файл stacktrace все еще печатается.
Что мне нужно сделать, чтобы избежать отпечатки stacktrace?
Я искал все похожие вопросы в StackOverflow, но все они пытаются решить другую проблему (исправление ввода или поиск правильного синтаксиса для синтаксического анализа ввода).
Я использую v2.18.1.
Ответы
Ответ 1
Вы должны использовать moment(String, String);
для анализа вашего ввода. Если вы не хотите указывать формат (или массив форматов), вы можете использовать moment.ISO_8601
. Как говорится в документах:
Moment уже поддерживает разбор строк iso-8601, но это можно явно указывать в формате/списке форматов при создании момента
Таким образом, у вас не будет предупреждения об устаревании. Вот рабочий пример:
var invalid = '2017-03-18 23;00;00';
if (moment(invalid, moment.ISO_8601).isValid()) {
console.log('valid date');
} else {
console.log('invalid date');
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>
Ответ 2
Укажите формат строки для вашей даты, тогда предупреждение исчезнет
moment("2017-1-27", 'YYYY-M-D').format('DD MMMM YYYY')
Ответ 3
Ниже приведено описание для удаления предупреждений RFC2822
Используйте момент (String, FormatString) для преобразования строки в дату.
var newDt = Moment(this.state.dob,"MM/DD/YY")
И ниже код от даты до строки
var dt = Moment(newDt).format("YYYY-MM-DD")
Таким образом, он не будет отображать предупреждающие сообщения.
Ответ 4
Добавление .format()
без каких-либо аргументов в выражение момента, которое вызывало это предупреждение, было для меня решением:
moment(r.created_at.toDate()).format()