Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

178
Vistas
al restar dos fechas en JavaScript me da un número decimal, pero ¿cómo es eso posible?

Estoy viendo un video donde la diferencia entre dos fechas devuelve 10 pero cuando lo intento me da un número decimal, pero ¿por qué? Podría envolverlo en Math.floor() pero agradecería que alguien me explicara. Aquí está el código

 const calcDaysPassed = (date1, date2) => Math.abs(date2 - date1) / (1000 * 60 * 60 * 24); const days1 = calcDaysPassed( new Date(2037, 3, 4), new Date(2037, 3, 14) ); console.log(days1);

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

"Los objetos de Date contienen un Number que representa milisegundos desde el 1 de enero de 1970 UTC". MDN

date2 - date1 devuelve la diferencia en milisegundos. La conversión se describe en MDN :

El método [@@toPrimitive]() del objeto Date devuelve un valor primitivo, que es de tipo number o de tipo string .

Si la hint es string o default , [@@toPrimitive]() intenta llamar al método toString . Si la propiedad toString no existe, intenta llamar al método valueOf y si valueOf tampoco existe, [@@toPrimitive]() arroja un TypeError .

Si la hint es un number , [@@toPrimitive]() primero intenta llamar a valueOf y, si eso falla, llama a toString .

JavaScript llama al método [@@toPrimitive]() para convertir un objeto en un valor primitivo. Rara vez necesita invocar el método [@@toPrimitive]() usted mismo; JavaScript lo invoca automáticamente cuando encuentra un objeto donde se espera un valor primitivo.

Math.abs(date2 - date1) / (1000 * 60 * 60 * 24) convierte los milisegundos en días.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Los objetos de fecha representan un solo instante en el tiempo y son solo un valor de tiempo que es un desplazamiento desde el 1 de enero de 1970 UTC.

El operador de resta obliga a los objetos de fecha a numerar como si fuera por date.valueOf() que es equivalente a date.getTime() , por lo que cuando resta una fecha de otra obtiene la diferencia en sus valores de tiempo de manera que:

 dateA - dateB === dateA.getTime() - dateB.getTime()

Así que en tu código:

 new Date(2037, 3, 4) - new Date(2037, 3, 14);

devuelve la diferencia en milisegundos:

 -864000000

que son 10 días estándar.

Tenga en cuenta que los valores pasados al constructor de fecha anterior se interpretan como locales, por lo que si hay un cambio de horario de verano en el rango de fechas, la diferencia podría ser más o menos por la cantidad del cambio de horario de verano (normalmente 1 hora pero en algunos lugares 30). minutos).

Hay muchas preguntas similares:

  1. ¿Obtener diferencia entre 2 fechas en JavaScript?
  2. Obtenga la diferencia de tiempo entre dos fechas en segundos
  3. ¿Cómo calcular el número de días entre dos fechas?
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda