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

108
Visualizações
Calcular una edad con d3-time

Estoy tratando de calcular la edad de una persona usando D3.js. Tengo el siguiente código:

 d3.timeYear.count(Birth_date, Current_date);

Birth_date es la fecha de nacimiento de una persona (un objeto Date) y Current_date es, bueno, la fecha en la que me gustaría calcular la edad de la persona. Para poder responder "si naciste el 5 de mayo de 1975, ¿cuántos años tenías el 3 de mayo de 1976".

d3.timeYear.count() parece redux las fechas hasta el comienzo del año, por lo que en mi ejemplo, mi código devolverá 1 el 1 de enero de 1976, aunque faltaban 5 meses para su primer cumpleaños.

Podría contar la cantidad de días en lugar de los años, pero podría obtener resultados erróneos localmente según la cantidad de días del año.

almost 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Lo siguiente se basa en el objeto Date de JavaScript y debería hacer el trabajo:

 function age(by,bm,bd){
 const D=new Date(), y=D.getFullYear(),
 md=D.getMonth()-bm, dd=D.getDate()-bd;
 return y-by-(md>0||!md&&dd>=0?0:1);
}

console.log(age(1992,8,26))

Básicamente devuelvo la diferencia entre el año completo de hoy y el cumpleaños. Pero también compruebo si el mes actual es mayor que el mes de cumpleaños o ( || ) si la diferencia de mes es cero ( !md es true ) y ( && ) la diferencia de día dd es mayor que cero. Si ese es el caso resto 0 de lo contrario 1 de la diferencia de año.

Y tenga en cuenta que mi función age() espera que el mes se ingrese en notación JavaScript. Esto significa que el 8 en el ejemplo anterior se refiere al mes de septiembre.

almost 4 years ago · Santiago Trujillo Relatório

0

La respuesta de Carsten Massman me inspiró a hacer esta función, que resuelve mi problema:

 function age(birthdate, currentdate){

 const bDay = birthdate.getDate(); // Get the birthdate's day.
 const bMonth = birthdate.getMonth(); // Get the birthdate's month.
 const currYear = currentdate.getFullYear(); // Get the current date's year.

 const currBirthday = new Date(currYear + "/" + (bMonth + 1) + "/" + bDay); // Contruct the date of the birthday in the current year
 const daysToBirthday = d3.timeDay.count( d3.timeYear.floor(currBirthday), currBirthday); // Count the # of days since Jan. 1st this year
 
 // Offset the current date in the past by the number of days computed above.
 const offsetCurrent = d3.timeDay.offset(currentdate, -daysToBirthday);
 
 // Compute the number of years between the two dates (floored to the beginning of their respective year).
 return d3.timeYear.count(birthdate, offsetCurrent);
}

Esto calcula la edad para cualquier fecha de nacimiento, y en cualquier momento posterior, utilizando principalmente d3-time y un poco de métodos de fecha de javascript de vainilla.

almost 4 years ago · Santiago Trujillo 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