2012-05-23 4 views
5

Является ли MomentJS предназначенным для парсинга ввода пользователя?MomentJS - Предназначен для проверки ввода?

У меня умеренно близкие с легкими случаями, когда он принимает даты в порядке DDMMYYYY и обрабатывает некоторые варианты.

Он не обрабатывает недействительные даты особенно хорошо при указании формата. Включая слишком высокие значения дня или значения года переключения между 2 и 4 цифрами.

Примеры интерпретации года:

var date1 = moment('30082012', 'DDMMYYYY'); 
var date2 = moment('30082012', 'DDMMYY'); // Gives wrong year - 2020 
var date3 = moment('300812', 'DDMMYYYY'); // Gives wrong year - 1900 
var date4 = moment('300812', 'DDMMYY'); 

примеров того, что можно надеяться, будут недействительные даты:

var date5 = moment('08302012', 'DDMMYYYY'); // Gives Jun 08 2014 
var date6 = moment('08302012', 'DDMMYY'); // Gives Jun 08 2022 
var date7 = moment('083012', 'DDMMYYYY'); // Gives Jun 08 1902 
var date8 = moment('083012', 'DDMMYY'); // Jun 08 2014 

Я создал JS скрипку с этими примерами: http://jsfiddle.net/cHRfg/2/

Есть способ мгновенного принятия более широкого набора пользовательских данных и отклонения недействительных дат? Или библиотека не предназначена для этого?

ответ

5

Вы можете попробовать разбор нескольких форматов. Обновлена ​​скрипка: http://jsfiddle.net/timrwood/cHRfg/3/

var formats = ['DDMMYYYY', 'DDMMYY']; 
var date1 = moment('30082012', formats); 
var date4 = moment('300812', formats); 

Вот соответствующие документы. http://momentjs.com/docs/#/parsing/string-formats/

Существует разработка по добавлению moment.fn.isValid, которая позволит вам выполнить проверку, как в примерах 5-8. Он будет добавлен в релиз 1.7.0. https://github.com/timrwood/moment/pull/306

1
var parsed = moment(myStringDate, 'DD.MM.YYYY'); 

для версии> = 1.7.0 Использование:

parsed.isValid() 

< для версии 1.7.0 создать свою собственную функцию IsValid():

function isValid(parsed) { 
    return (parsed.format() != 'Invalid date'); 
}  

проверку Документов: http://momentjs.com/docs/#/parsing/is-valid/

 Смежные вопросы

  • Нет связанных вопросов^_^