intenté hacer mi programa para calcular la diferencia de días desde mi nacimiento hasta la fecha más dinámico tomando el dato de la fecha...

Pregunta de la clase:
¿Hace cuántos días naciste?
Diego Cesar Lerma Torres

Diego Cesar Lerma Torres

Pregunta
studenthace 4 años

intenté hacer mi programa para calcular la diferencia de días desde mi nacimiento hasta la fecha más dinámico tomando el dato de la fecha de nacimiento desde un objeto de la clase Persona y así poder calcular este dato automáticamente de un gran número de personas:

function Persona(nombre, apellido, fecha_nacimiento){ this.nombre=nombre this.apellido=apellido this.fecha_nacimiento=fecha_nacimiento //... var diego= new Persona('Diego', 'Lerma', new Date(1998,10,25)) }

el problema es que al tomar la variable de esta forma, el tipo de variable se vuelve ‘any’ y al hacer la resta, la diferencia resulta en NaN:

Imagen sin título.png

NaN.png Se me ocurre que para resolverlo puedo escribir una función generadora de esta fecha como una constante distinta al atributo del objeto generado, pero no sé si haya una forma directa de tomar el valor objeto y convertirlo a date

2 respuestas
para escribir tu comentario
    Diego Cesar Lerma Torres

    Diego Cesar Lerma Torres

    studenthace 4 años

    Muchas gracias por su apoyo!

    La parte donde hago el cálculo es la siguiente:

    function diasEntreFechas(fecha_hoy, persona){ const unDia=1000*60*60*24 const diferencia=Math.abs(fecha_hoy-persona.nacimiento) // console.log(diferencia) Puse esta linea para el debugging return Math.floor(diferencia/unDia)

    Ya intenté tomar la variable en una constante dentro de la función, descomponer el objeto y varias cosas, pero creo que es un problema lógico, porque algo de lo que no me había dado cuenta antes de que todos atributos de los objetos que manejamos en JS con de tipo 'any'

    Les muestro el código completo:

    const hoy=new Date() // const diego_nacimiento=new Date(1998,10,25) function Persona(nombre, apellido, fecha_nacimiento){ this.nombre=nombre this.apellido=apellido this.fecha_nacimiento=fecha_nacimiento } function diasEntreFechas(fecha_hoy, persona){ const unDia=1000*60*60*24 const diferencia=Math.abs(fecha_hoy-persona.nacimiento) // console.log(diferencia) Puse esta linea para el debugging return Math.floor(diferencia/unDia) } function imprimirFecha(persona){ console.log(`${persona.nombre} ${persona.apellido}, Usted ha vivido ${diasEntreFechas(hoy, persona.nacimiento)} dias desde el dia:\n${persona.nacimiento} hasta:\n ${hoy}`) console.log(`El equivalente a ${(diasEntreFechas(hoy, persona.nacimiento)/365)} años`) } var diego= new Persona('Diego', 'Lerma', new Date(1998,10,25)) imprimirFecha(diego)
    Miguel Torres

    Miguel Torres

    studenthace 4 años

    Hola, @diego-lerma. :D

    ¿En qué parte de tu código estás haciendo el cálculo? ¿Podrís mostrarlo por favor?

Fundamentos de JavaScript 2018

Fundamentos de JavaScript 2018

JavaScript es un lenguaje de programación que se trabaja desde el navegador. Construye programas, conoce el entorno, los condicionales y las estructuras repetitivas. Aprende cuáles son y cómo se declaran las variables y las funciones de JS.

Fundamentos de JavaScript 2018
Fundamentos de JavaScript 2018

Fundamentos de JavaScript 2018

JavaScript es un lenguaje de programación que se trabaja desde el navegador. Construye programas, conoce el entorno, los condicionales y las estructuras repetitivas. Aprende cuáles son y cómo se declaran las variables y las funciones de JS.