我有一个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());
答案 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是计算日期的全部逻辑