是否有办法在出生日期(dd / mm / yyyy)进行验证,以确定用户是否未满18岁。我发现的大多数教程只向我展示了如果用户年龄(不是DOB)低于18,该怎么做。 顺便说一下,我也在为我的DOB文本框使用输入类型的“日期”。 HTML
require
答案 0 :(得分:2)
我首先计算年龄,然后检查他是否超过18岁。这是一个代码片段。
var birthday1 = new Date("2015-03-25");
var birthday2 = new Date("1994-03-25");
function isOverEighteen(birthday) {
var ageDifMs = Date.now() - birthday.getTime();
var ageDate = new Date(ageDifMs);
var age = Math.abs(ageDate.getUTCFullYear() - 1970);
if(age > 17){
return true;
}else{
return false;
}
}
console.log(isOverEighteen(birthday1));
console.log(isOverEighteen(birthday2));

答案 1 :(得分:0)
有many similar questions,但似乎都没有好的答案。
不是计算年龄(实际上比许多人预期的那样),你可以在出生日期增加18年,看看是否在今天之前,或从今天减去18年,看看是否在出生日期之后
// Subtract 18 years from now and see if greater than birth date
function over18(birthDate) {
var now = new Date();
var m = now.getMonth();
now.setFullYear(now.getFullYear() - 18);
// deal with today being 29 Feb
if (m != now.getMonth()) now.setDate(0);
return now > birthDate;
}
// Some tests
var opts = {day: '2-digit', month:'short', year:'numeric'};
[new Date(2000,1,29), // 29 Feb 2000
new Date(2000,0,20), // 20 Jan 2000
new Date(2000,0,19), // 19 Jan 2000
new Date(2000,0,18), // 18 Jan 2000
new Date(1999,0,1) // 1 Jan 1999
].forEach(function(d) {
console.log(d.toLocaleString('en-GB', opts), over18(d));
});
一个简单的改进是允许一个默认为今天的可选 checkDate 并使用它而不是 now 。