Hola, estoy recorriendo una serie de objetos e intentando cambiar los valores a verdaderos si el valor se valida como una fecha, pero algunos valores también se ven afectados. Pongo ejemplos de algunos valores a continuación.
const data1 = 1200; const date = '2022-05-24T14:52:30.250Z'; console.log(moment(data1, moment.ISO_8601, true).isValid()); < --- expected to be false but returns true console.log(moment(date, moment.ISO_8601, true).isValid()); < --- returns true¿Por qué es esto? Gracias por la ayuda.
Cuando el primer valor pasado a moment es un número, se trata como un valor de tiempo, el argumento de formato se ignora. Cualquier número en el rango de ±8.64e15 será tratado como una fecha válida.
El número 1200 se tratará como 1200 milisegundos después de la época de ECMAScript del 1 de enero de 1970 UTC, por lo que 1970-01-01T00:00:01.200Z, que es una fecha válida.
console.log(moment(1200).utc().format('YYYY-MM-DD HH:mm:ss.SSS')); <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.3/moment.min.js"></script>