2012-05-23 10 views
5

¿MomentJS está pensado para el análisis de entrada del usuario?MomentJS: ¿pensado para la validación de entrada?

Me he acercado moderadamente con los casos fáciles, teniendo que aceptar fechas en el orden DDMMYYYY, y maneja algunas variaciones.

No maneja las fechas no válidas particularmente bien al especificar el formato - Incluyendo tener valores de día demasiado altos, o cambiar los valores de año entre 2 y 4 dígitos.

ejemplos de interpretación años:

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

ejemplos de lo que se espera pueda ser fechas no válidas:

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 

he creado un JS violín con estos ejemplos: http://jsfiddle.net/cHRfg/2/

¿Existe una forma de tener el momento de aceptar una gama más amplia de la entrada del usuario, y rechazar las fechas no válidas? ¿O la biblioteca no está diseñada para esto?

Respuesta

5

Puede tratar de analizar varios formatos. violín actualización: http://jsfiddle.net/timrwood/cHRfg/3/

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

Aquí están los documentos pertinentes. http://momentjs.com/docs/#/parsing/string-formats/

Hay un desarrollo en agregar moment.fn.isValid que le permitirá hacer la validación como en los ejemplos 5-8. Se agregará en la versión 1.7.0. https://github.com/timrwood/moment/pull/306

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

para la versión> = 1.7.0 uso:

parsed.isValid() 

para la Versión 1.7.0 < crear su propia función isValid():

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

de partida de los documentos: http://momentjs.com/docs/#/parsing/is-valid/

Cuestiones relacionadas