【问题标题】:calculate/check date of birth is less than 110 years old in JavaScript在 JavaScript 中计算/检查出生日期小于 110 岁
【发布时间】:2014-11-25 14:08:33
【问题描述】:

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

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)

非常感谢。

【问题讨论】:

  • 遍历数组,创建一个日期对象,进行比较。
  • 您好,谢谢您的回复,您能帮忙比较一下吗?谢谢... JS新手

标签: javascript sql arrays validation date


【解决方案1】:

使用the .getFullYear() method of Date type

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
}

应该可以的。

【讨论】:

    【解决方案2】:

    我会这样做:

    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;
    }
    

    【讨论】:

    • Hazaart ...我忘了说,参数日期值将被传入,例如'2014/09/30',并且基于那一年(例如,2014),一切都应该进行计算。感谢您的帮助。
    猜你喜欢
    • 2022-11-23
    • 2018-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-24
    • 2011-06-16
    相关资源
    最近更新 更多