日期选择器-以毫秒为单位的日期-生日检查



我有一个日期选择器,它返回选定的生日日期:

我将is转换为以毫秒为单位的日期:

var datebirth = this.CreateUserForm.get('bdate').value;
var tempdate = new Date(datebirth.year, datebirth.month-1, datebirth.day);
user.bdate = tempdate.getTime();

现在我计算年龄(有效(

var datetoday = new Date();
var ageDifMs = datetoday.getTime() - tempdate.getTime();
var age = Math.floor(ageDifMs / 1000 / 60 / 60 / 24 / 365);

它返回正确的年龄。现在我试着检查一下今天是不是生日!

var datetoday = new Date();
console.log ('with HOURS '+datetoday.getTime());
datetoday.setHours(0,0,0,0);
console.log ('without HOURS '+datetoday.getTime());
var ageDifMs = datetoday.getTime() - tempdate.getTime();
var age = Math.floor(ageDifMs / 1000 / 60 / 60 / 24 / 365);
var agefull = ageDifMs / 1000 / 60 / 60 / 24 / 365;
if(age===agefull){
bdaytoday= true;
} 

在2019年,它是有效的,但在早些年(例如2010年(我得到这个结果

年龄:9岁年龄:9.005593607305936

如果我用数学,地板每天都会是我的生日。

感谢Joel Joseph:

datetoday.setFullYear(0);
tempdate.setFullYear(0);
if(datetoday.valueOf()===tempdate.valueOf()){
bdaytoday= true;
} 

这样工作!:D

试着只比较今天的日期和出生日期,如下所示:

var tempDate = new Date('2019-10-29')
tempDate.getTime() === new Date().setHours(0, 0, 0, 0);

最新更新