JavaScript 18岁以下的出生日期

时间:2018-01-18 09:52:35

标签: javascript html validation date

是否有办法在出生日期(dd / mm / yyyy)进行验证,以确定用户是否未满18岁。我发现的大多数教程只向我展示了如果用户年龄(不是DOB)低于18,该怎么做。 顺便说一下,我也在为我的DOB文本框使用输入类型的“日期”。 HTML

require

2 个答案:

答案 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