ES6函数结果显示NaN

时间:2018-11-11 03:10:10

标签: javascript es6-class

我有一个ES6类函数,我不明白为什么控制台结果显示NaN

class Person {
    constructor(firstName, lastName, dob) {
        this.firstName = firstName;
        this.lastName = lastName;
        this.birthday = new Date(dob);
    }

    greeting() {
        return `Hello there, This is ${this.firstName} ${this.lastName}`;
    }

    calculateAge() {
        const diff = Date.now() - this.birthday.getTime();
        const ageDate = new Date(diff);
        return Math.abs(ageDate.getUTCFullYear() - 1995);
    }
}

const niran = new Person('Niran', 'Yousuf', '26-12-1992');

console.log(niran.calculateAge());

3 个答案:

答案 0 :(得分:2)

问题出在要发送到第5行上的Date对象的字符串中。只需更改诸如new Date(26,12,1992)之类的值即可。

Date对象的语法为:

新日期()

新日期(年,月,日,小时,分钟,秒,毫秒)

新日期(毫秒)

新日期(日期字符串)

在以下位置查看文档:{​​{3}}

答案 1 :(得分:1)

日期的语法是:

new Date();
new Date(value);
new Date(dateString);
new Date(year, monthIndex [, day [, hours [, minutes [, seconds [, milliseconds]]]]]);

在PHP中,没有DateInterval这样的东西(没有库)。

答案 2 :(得分:1)

您可以修复日期差异逻辑。问题在于您之间的差异以及您如何传递日期

var date1 = new Date("7/13/2010"); // this is your birth year
var date2 = new Date(); // This is your current date
var timeDiff = Math.abs(date2.getTime() - date1.getTime());
var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24 * 365)); 
alert(diffDays);

Rest是计算日期的全部逻辑