Creo la fecha de dos maneras:
Lo hice antes de haber leído en MDN, que Date.prototype.getTime() no tiene parámetro. Significa que la segunda forma es incorrecta. Sin embargo, da el mismo valor de fecha de la manera correcta ( new Date('*some date*').getTime(); ) pero la cantidad de milisegundos es diferente y no entiendo por qué.
¿Alguien podría explicarme?
(function () { let dateToCount = "Jan 01, 2022 00:00:00"; let date1 = new Date(dateToCount).getTime(); let date2 = new Date().getTime(dateToCount); console.log(Date(date1).toString()); // Tue Oct 19 2021 22:41:59 GMT+0300 (Eastern European Summer Time) console.log(Date(date2).toString()); // Tue Oct 19 2021 22:41:59 GMT+0300 (Eastern European Summer Time) console.log(`date1 = ${date1} ms`); // date1 = 1640988000000 ms console.log(`date2 = ${date2} ms`); // date2 = 1634672519002 ms console.log(`date1 - date2 = ${+date1 - (+date2)} ms`); // date1 - date2 = 6315480998 ms })();da el mismo valor de fecha de la manera correcta da
No, no es así, es solo que cuando estaba depurando con console.log(Date(date1).toString()); Cayó en otra trampa más: perdió el new operador en la llamada Date . Como dice MDN :
Llamar a la función Date() (sin la palabra clave new ) devuelve una representación de cadena de la fecha y hora actuales, exactamente como lo hace new Date().toString() . Se ignoran todos los argumentos proporcionados en una llamada a la función Date() (sin la new palabra clave); independientemente de si se llama con una cadena de fecha no válida, o incluso con cualquier objeto arbitrario u otra primitiva como argumento, siempre devuelve una representación de cadena de la fecha y hora actuales.
Entonces, si también arregla eso, se dará cuenta de que los dos valores de milisegundos diferentes que obtiene de getTime() en realidad representan dos fechas diferentes:
const dateToCount = "Jan 01, 2022 00:00:00"; const date1 = new Date(dateToCount).getTime(); const date2 = new Date().getTime(dateToCount); console.log(new Date(date1).toString()); // Sat Jan 01 2022 00:00:00, as expected console.log(new Date(date2).toString()); // Surprise! console.log(`date1 = ${date1} ms`); console.log(`date2 = ${date2} ms`);