momentjs - español - moment.js examples
Cómo manejar la advertencia de desaprobación en momentjs (4)
Quiero usar momentjs para verificar cadenas de fecha / hora no válidas:
var invalid = ''2017-03-18 23;00;00'';
if (moment(invalid).isValid()) {
return ''valid date''
}
Esto (correctamente) arroja un seguimiento de la pila con el familiar ''Advertencia de desaprobación: el valor proporcionado no está en un formato RFC2822 o ISO reconocido ......''
Pero incluso si agrego un 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'');
}
el stacktrace todavía se imprime. ¿Qué debo hacer para evitar que se imprima el stacktrace?
He buscado todas las preguntas similares en StackOverflow pero todas intentan resolver un problema diferente (arreglar la entrada o encontrar la sintaxis correcta para analizar la entrada).
Yo uso v2.18.1.
A continuación me funciona para eliminar las advertencias RFC2822
Use moment (String, FormatString) para convertir la cadena a la fecha.
var newDt = Moment(this.state.dob,"MM/DD/YY")
Y debajo del código de fecha a cadena
var dt = Moment(newDt).format("YYYY-MM-DD")
De esta manera no mostrará mensajes de advertencia.
Agregar
.format()
sin ningún argumento a la expresión de momento que estaba causando esa advertencia fue la solución para mí:
moment(r.created_at.toDate()).format()
Especifique el formato de cadena para su fecha y la advertencia desaparecerá.
moment("2017-1-27", ''YYYY-M-D'').format(''DD MMMM YYYY'')
Tienes que usar
moment(String, String);
para analizar su entrada.
Si no desea especificar un formato (o una
matriz de formatos
), puede usar
moment.ISO_8601
.
Como dice la documentación:
Moment ya admite el análisis de cadenas iso-8601, pero esto se puede especificar explícitamente en el formato / lista de formatos al construir un momento
De esta manera no tendrá advertencia de desaprobación. Aquí un ejemplo de trabajo:
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>
PD.
De todos modos, si tiene una lista de formatos aceptados, sugiero usar
moment(String, String[]);
(y análisis estricto, si es necesario).