javascript - truco - el oro blanco se pega al iman
¿Cómo probar una cadena es una fecha válida o no usa el momento? (4)
Puedes usarlo.
if (startDate == null || !startDate.isValid()) {return false;}
Me gustaría probar si una fecha y / o hora ingresadas son válidas.
¿Se puede hacer esto con el momento como prueba de fecha y hora con javascript parece una pesadilla. (he pasado horas en esto).
Los datos de prueba se ven así.
Inválido
invalid = ""
invalid = " "
invalid = "x"
invalid = "1/1"
invalid = "30/2/2015"
invalid = "2/30/2015"
Es válida
isvalid = "1/12/2015"
isvalid = "1/12/2015 1:00 PM";
He intentado varios métodos de JavaScript con fallas de horas de prueba.
Pensé que el momento tendría algo para esto. Así que intenté lo siguiente, todo lo cual no funciona porque no creo que el momento funcione así.
var valid = moment(input).isDate()
var valid = moment().isDate(input)
Mi formato de tiempo es "dd / mm / aaaa"
El momento tiene una función llamada isValid .
Desea utilizar esta función junto con el formato de fecha de destino y el parámetro de análisis estricto en verdadero (de lo contrario su validación podría no ser consistente) para delegar en la biblioteca todas las comprobaciones necesarias (como años bisiestos):
var dateFormat = "DD/MM/YYYY";
moment("28/02/2011", dateFormat, true).isValid(); // return true
moment("29/02/2011", dateFormat, true).isValid(); // return false: February 29th of 2011 does not exist, because 2011 is not a leap year
Puede usar la función Date.parse ().
Here están los detalles de cómo usarlo.
Sí, puedes usar momentjs para analizarlo y compararlo con la cadena
function isValidDate(str) {
var d = moment(str,''D/M/YYYY'');
if(d == null || !d.isValid()) return false;
return str.indexOf(d.format(''D/M/YYYY'')) >= 0
|| str.indexOf(d.format(''DD/MM/YYYY'')) >= 0
|| str.indexOf(d.format(''D/M/YY'')) >= 0
|| str.indexOf(d.format(''DD/MM/YY'')) >= 0;
}
Código de prueba
tests = ['''','' '',''x'',''1/1'',''1/12/2015'',''1/12/2015 1:00 PM'']
for(var z in tests) {
var test = tests[z];
console.log(''"'' + test + ''" '' + isValidDate(test));
}
Salida
"" false
" " false
"x" false
"1/1" false
"1/12/2015" true
"1/12/2015 1:00 PM" true