在 JavaScript 中计算/检查出生日期小于 110 岁

calculate/check date of birth is less than 110 years old in JavaScript

本文关键字:出生日期 小于 检查 JavaScript 计算      更新时间:2023-09-26

我有一个这样的日期数组:

var dateArray = ["1965-12-29", "1902-11-04", "1933-10-21", "1983-10-16"];

我想做的是检查/计算每个出生日期元素,以查看年龄是否仅基于年份小于 110 岁。如果年龄大于 110 岁(也仅基于年份),那么我想让这个元素从 dateArray 中删除/删除。

基本上,我正在尝试做的是在JavaScript中转换以下SQL代码:

FROM TABLE X
WHERE TO_CHAR(DOB, 'YYYY') > (TO_CHAR(TO_DATE('2014/09/30', 'YYYY/MM/DD'), 'YYYY') - 110)

非常感谢。

使用 Date 类型的.getFullYear()方法:

for(var i=0;i<dateArray.length;i++)
{
   var now = new Date();// or specify any date you want with new Date("2014/10/15");
   var birth = new Date(dateArray[i]);
   var age = now.getFullYear() - birth.getFullYear();
   //then use the age var and test if it's bigger than 110
}

这应该可以做到。

以下是我的做法:

var dateArray = ["1965-12-29", "1902-11-04", "1933-10-21", "1983-10-16"];
dateArray = removeOldPeople(dateArray);
function removeOldPeople(dateArray){ 
    //looping backwards because I delete items from array in loop
    for(var i = dateArray.length -1 ; i >=0 ; i--){
      var dateString = dateArray[i].split("-");
      var year = dateString[0];
      var month = parseInt(dateString[1])-1;
      var day = dateString[2];
      var age = calculateAge(day, month, year);
        if(age >= 110) {
            dateArray =  dateArray.splice(i);
        }
    }
}
function calculateAge(birthMonth, birthDay, birthYear){
  todayDate = new Date();
  todayYear = todayDate.getFullYear();
  todayMonth = todayDate.getMonth();
  todayDay = todayDate.getDate();
  age = todayYear - birthYear; 
  if (todayMonth < birthMonth - 1){
    age--;
  }
  if (birthMonth - 1 == todayMonth && todayDay < birthDay){
    age--;
  }
  return age;
}