2012-05-23 15 views
5

Czy funkcja MomentJS jest przeznaczona do analizowania danych wejściowych przez użytkownika?MomentJS - przeznaczony do sprawdzania poprawności danych wejściowych?

Mam umiarkowanie blisko z łatwymi przypadkami, mając akceptować daty w kolejności DDMMRRRR, i obsługuje niektóre odmiany.

Nie obsługuje dat niepoprawnych szczególnie dobrze przy określaniu formatu - w tym o zbyt wysokich wartościach dziennych lub zmianie wartości roku między 2 a 4 cyframi.

Przykłady interpretacji Rok:

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'); 

przykłady tego, co miejmy nadzieję być nieprawidłowe daty:

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 

Stworzyłem JS Fiddle z tych przykładów: http://jsfiddle.net/cHRfg/2/

Czy istnieje sposób na moment zaakceptować szerszy wachlarz danych wprowadzanych przez użytkownika i odrzucić nieprawidłowe daty? A może biblioteka nie jest do tego przeznaczona?

Odpowiedz

5

Możesz spróbować parsować wiele formatów. Zaktualizowane skrzypce: http://jsfiddle.net/timrwood/cHRfg/3/

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

Oto odpowiednie dokumenty. http://momentjs.com/docs/#/parsing/string-formats/

Istnieje rozwój w zakresie dodawania moment.fn.isValid, który pozwoli na sprawdzenie poprawności, jak w przykładach 5-8. Zostanie dodany w wydaniu 1.7.0. https://github.com/timrwood/moment/pull/306

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

dla wersji> = 1.7.0 Zastosowanie:

parsed.isValid() 

dla wersji < 1.7.0 tworzyć własne IsValid() Funkcja:

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

kasę docs: http://momentjs.com/docs/#/parsing/is-valid/

Powiązane problemy