Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

175
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda