Necesito ayuda con el objeto Date en JS. Necesito una declaración que verifique si el paciente es un adulto según la fecha de nacimiento. No estoy seguro de cómo usar el objeto de fecha para obtener un retorno de la edad en milisegundos (la fecha devuelve milisegundos desde el 1 de enero de 1970 UTC). Si alguien tiene una idea, se la agradezco. <3

 let today = Date.now()
 function patient(fname, lname, origin, dob){
    this.fname,
    this.lname,
    this.origin,
    **this.dob,**
    this.age = (today - dob)
    this.isAdult = age > 18)}
1
OMGGItsRob 14 mar. 2021 a las 08:38

2 respuestas

La mejor respuesta

Puede convertir su DOB a milisegundos desde Epoch time con getTime ()

Para dob, puede configurar las variables de entrada como mes, día y año, crear un nuevo objeto Date y usar getTime () para convertirlo en milisegundos:

 function patient(fname, lname, origin, month, date, year){
    this.fname,
    this.lname,
    this.origin,
    this.dob = new Date(`${month} ${day}, ${year}`).getTime()
    this.age = (Date.now() - dob)/1000/60/60/24/365 
    //convert to seconds/minutes/hours/day/year (ignoring leap years for this examples)
    this.isAdult = age > 18)}

Enlace al ejemplo de CodePen

Ahora es solo cuestión de convertir milisegundos de nuevo a año, el ejemplo anterior ignora el año bisiesto, dependiendo de las precisiones que elija, puede redondearlo o escribir una función para determinar los números exactos hasta decimales

-1
Isaac Yong 14 mar. 2021 a las 06:01

Puede crear un nuevo objeto Date y llamar a getTime() para obtener la marca de tiempo de Unix.

date = new Date('2020-01-01')
// Wed Jan 01 2020 07:00:00 GMT+0700 (Indochina Time)
date.getTime()
// 1577836800000

Digamos que su definición de "adulto" es que alguien debe tener al menos 18 años. 18 años son 568036800000 milisegundos (asumiendo 365,25 días por año). Entonces, su función de verificación sería la siguiente:

const ADULT_THRESHOLD_MILLISECONDS = 568036800000;

function checkIsAdult(patientDob) {
  const patientDobUnixTimestamp = new Date(patientDob).getTime();
  const currentTimestamp = Date.now();

  return (currentTimestamp - patientDobUnixTimestamp) > ADULT_THRESHOLD_MILLISECONDS;
}
-1
Jackyef 14 mar. 2021 a las 05:50