Javascript дата: почему я всегда получаю 50 за возраст, независимо от того, какую дату я ставлю? - PullRequest
1 голос
/ 02 мая 2020

Я учусь получать возраст от даты рождения, но независимо от того, какую дату я поставлю как dob, я всегда получу 50. Что-то еще является строкой в ​​этом коде? В чем проблема?

function Person(name, dob) {
  this.name = name;
  // this.age = age;
  this.birthday = new Date(dob);
  this.calAge = function(){
    const diff = Date.now() - this.birthday.getTime();
    const ageDate = new Date(diff);
    return Math.abs(ageDate.getUTCFullYear() - 1970);
  }
}
const angel = new Person('Angel', 2-3-2004);
console.log(angel.calAge());

Ответы [ 4 ]

1 голос
/ 02 мая 2020

звонок с цитатой и правильным форматом даты

const angel = new Person('Angel', '2004-03-02');
0 голосов
/ 02 мая 2020

function Person(name, dob) {
  this.name = name;
  // this.age = age;
  this.birthday = new Date(dob);
  this.calAge = function(){
    const diff = Date.now() - this.birthday.getTime();
    const ageDate = new Date(diff);
    return Math.abs(ageDate.getUTCFullYear() - 1970);
  }
}
const angel = new Person('Angel', '2004-4-2');
console.log(angel.calAge());

Я думаю, вы должны заключать свои аргументы в кавычки, иначе это будет рассматриваться как число. const

0 голосов
/ 02 мая 2020

вот это: const angel = new Person('Angel', '2004-03-02');

и вот это: const angel = new Person ('Angel', '2-3-2004');

оба они верны

0 голосов
/ 02 мая 2020

Причина в том, что ageDate.getUTCFullYear() всегда возвращает 2020.

Это потому, что ваш this.birthday.getTime() всегда возвращает неправильный номер, который по this.birthday = new Date(dob); имеет неправильное использование.

Обязательно проверьте формат параметров конструктора Date. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/Date

...