首页 > 试题广场 >

写个JavaScript函数来判断是否大于18岁,比如传入1

[问答题]
写个JavaScript函数来判断是否大于18岁,比如传入1993-6-3,返回true,传递2001-6-3返回false;
推荐
    /* 分割时间字符串 */
    function dateFormat(date) {
        var dateArr = date.split('-');
        return dateArr;
    }

    /* 补0操作 */
    function zeroFormat(date) {
        return date > 10 ? date : '0' + date;
    }

    /* 判断是否大于18 */
    function isYear(year) {
        var currentDate = new Date();
        var flagDate = dateFormat(year);

        var currentYear = currentDate.getFullYear();
        var currentMon = zeroFormat(currentDate.getMonth() + 1);
        var currentDay = zeroFormat(currentDate.getDate());

        var flagYear = flagDate[0];
        var flagMon = flagDate[1];
        var flagDay = flagDate[2];

        if (currentYear - flagYear > 18) {
            return true;
        } else if (currentYear - flagYear === 18 && currentMon > flagMon) {
            return true;
        } else if (currentYear - flagYear === 18 && currentMon === flagMon && currentDay > flagDay) {
            return true;
        } else {
            return false;
        }
    }
    console.log(isYear('2000-01-05'));
    console.log(isYear('1999-02-14'));
    console.log(isYear('1999-02-13'));
    console.log(isYear('1989-12-26'));

编辑于 2017-05-24 14:41:09 回复(0)
function adult(date){
    var elems = date.split('-'),
        today = new Date(),
        year = today.getFullYear(),
        month = today.getMonth() + 1,
        day = today.getDate()
        
    if (+elems[0]+18 < year) {
        return true
    }else if(+elems[0]+18 > year){
        return false
    }else{
        if (+elems[1] < month) {
            return true
        }else if(+elems[1] < month){   
            return false
        }else{
            if (+elems[2] < day) {
                return true
            }else{
                return false
            }
        }
    }
}

发表于 2017-08-21 15:00:09 回复(0)

method1

例子:若今日为“2017-10-10”,生日为“1999-10-9”,思路如下

"2017-10-10" => "1999-10-10" => "19991010"
"1999-10-9" => "1999-10-09" => "19991009"
"19991009" - "19991010" = -1 < 0(返回true)

代码实现

function format(num){
    return num.toString().replace(/^(\d)$/, "0$1");
}
function isAdult(birthday){
    var n = new Date(),
        b = birthday.replace(/\-(\d{1})(\b)/g, "-0$1").replace(/\-/g,""),
        t = (n.getFullYear()-18) + format(n.getMonth()+1) + format(n.getDate());
    return (b - t <= 0);
}

method2

function isAdult(birthday){
    let [birYear, birMonth, birDate] = birthday.split("-");
    let today = new Date();
    let [Y,M,D] = [today.getFullYear(), today.getMonth() + 1, today.getDate()];
    if(Y - birYear < 18){
        return false;
    }else if(Y - birYear === 18){
        if(M - birMonth < 0){
            return false;
        }else if(M - birMonth === 0){
            if(D - birDate < 0){
                return false;
            }
        }
    }
    return true;
}
编辑于 2017-10-29 20:18:34 回复(0)
//代码简单,但兼容性不好
function judge(str){
    var age=new Date(str).getTime();
    var now=new Date().getTime();
    if((now-age)/1000>18*365*24*3600)return true;//两个时间秒的差值是不是大于18年的秒数,没有考虑一年有366天
    else return false;
}

编辑于 2017-08-22 10:53:59 回复(0)
function adult(date){
    var time = date.split('-'),
          nowTime = new Date(),
          nowYear = nowTime.getFullYear(),
          nowMonth = nowTime.getMonth(),
          nowDay = nowTime.getDate();
    if(nowYear - time[0] > 18){
            return true;
   }else if(nowYear - time[0] < 18){
            retun false;
  }
    if(nowMonth + 1 >  time[1] ){
            return true;
    }else if(nowYear + 1 < time[1]){
            retun false;
   }
    if(nowDate >= time[2]){
            return true;
    }else{
            return false;
    }
}
console.log(adult('2003-09-20));//false;
console.log(adult('1996-09-20));//true;
发表于 2017-12-06 19:27:43 回复(0)
(function(){
var doc = document;
var val = doc.getElementById('value');
var butn = doc.getElementById('button');
butn.onclick = function(e){
alert(getGo()?"大于18岁":"不大于18岁")
}
function getGo(){
//var str = val.value.split("-");
var str = val.value + " 0:0:0"    // 添加成时间格式
var bothday = Date.parse(str)
var mydate = Date.parse(new Date()); // 转成时间戳
var age = (mydate - bothday)/(1000*60*60*24*365) // 毫秒转成年

return age>18?true:false;
}
})()
发表于 2017-11-05 17:31:54 回复(1)


function isChengnian(year,month,date){  var day=new Date(),
        yearNow=day.getFullYear(),
        monthNow=day.getMonth()+1,
        dateNow=day.getDate();

    if(yearNow-year>18||(yearNow-year==18 && monthNow>month)||
        (yearNow-year==18 && monthNow==month && dateNow>date)){
            return true;
    }else{
            return false;
    }
}
console.log(isChengnian(1999,10,28)); //true
console.log(isChengnian(1999,10,29)); //false
console.log(isChengnian(1999,10,30)); //false

编辑于 2017-10-29 22:56:29 回复(0)

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<title>css3</title>

</head>

<body>

<script>

 // 分割时间字符串

function dateFormat(date) {

    var dateArr = date.split('-');

    return dateArr;

}

 

/* 补0操作 */

function zeroFormat(date) {

    return date > 10 ? date : '0' + date;

}

/* 判断是否大于18 */

function isYear(year) {

    var currentDate = new Date();

    var flagDate = dateFormat(year);

 

    var currentYear = currentDate.getFullYear();

    var currentMon = zeroFormat(currentDate.getMonth() + 1);

    var currentDay = zeroFormat(currentDate.getDate());

 

    var flagYear = flagDate[0];

    var flagMon = flagDate[1];

    var flagDay = flagDate[2];

 

    if (currentYear - flagYear > 18) {

        return true;

    } else if (currentYear - flagYear === 18 && currentMon > flagMon) {

        return true;

    } else if (currentYear - flagYear === 18 && currentMon === flagMon && currentDay > flagDay) {

        return true;

    } else {

        return false;

    }

}

console.log(isYear('2000-01-05'));

console.log(isYear('1999-02-14'));

console.log(isYear('1999-02-13'));

console.log(isYear('1989-12-26'));

</script>

</body>

</html>


发表于 2017-09-05 09:42:33 回复(0)
function isOlderThanEighteen(ageStr){
	var ageArr=ageStr.split("-");
    if(ageArr.length<3){return;}
    var minus=Date.UTC(2018,0,0,0,0,0)-Date.UTC(2000,0,0,0,0,0);//18年之间差的秒数
    var dateNow=Date.now();
    var ageSeconds=Date.UTC(ageArr[0],ageArr[1]-1,ageArr[2]);//生日的秒数
    return dateNow-ageSeconds>minus? true : false ;
}//精确到小时

发表于 2017-09-04 16:42:50 回复(0)
		function getAge(str) {
				var y = new Date().getFullYear() -  str.split('-')[0];
				if(y > 18) {
					return true;
				}else{
					return false;
				}
			}
			getAge('2017-4-4');
//只要大于18就行了

发表于 2017-08-28 11:03:11 回复(0)
function ageJudge(birth){
    var data = new Date();
   var year = data.getFullYear();
   var month = data.getMonth()+1;
   var day = data.getDate();
    
    var year2 = parseInt( birth.split("-")[0] );
    var month2 = parseInt( birth.split("-")[1] );
    var day2 =  parseInt( birth.split("-")[2] );    
    if((year-year2)>18){
        return true;   }else if((year-year2)<18){
        return false;
   }else{
        if((month-month2)<0){
            return false;
        }else if((month-month2)>0){
           return true;
       }else{
            if((day-day2)<0){
                return false;
            }else if((day-day2)>=0){
                return true;
            }
       }
    }
 }


发表于 2017-08-27 17:16:58 回复(0)
var getAge = function(born) {
    var bornYear = born.substring(0,4);
    if(bornYear == undefined) {
      console.log("false");
    }
    var date = new Date;
    var currentYear = date.getFullYear();
    var age = currentYear - bornYear;
    if(age >= '18') {
      console.log("true");
    }else {
      console.log("false");
    }

};


发表于 2017-08-26 15:29:19 回复(0)
<script type="text/javascript">
var get-borth=prompt("输入你的出生年月");
var borth=Number(get_borth);
var flag=false;
if((2017-borth)>=18){
flag=ture;
alert(flag);
}
else{
    flag=false;    
    alert(flag);
}
 
</script>
发表于 2017-08-25 11:26:55 回复(0)
var fmt_date = function(date){
	if(!date) return;
    var arr = date.split(/[- : \/]/);
	if(arr.length < 6){
		while(arr.length <= 6){
			arr.push(0)
		}
	}
    return arr;
}

var com = function(year){
	var birth = fmt_date(year);
	var now = new Date(),
		year = now.getFullYear(),
		month = now.getMonth() + 1,
		day = now.getDate();
	
	if(year - birth[0] > 18){
		return true;
	}else if(year - birth[0] == 18 && month - birth[1] > 0){
		return true;
	}else if(year - birth[0] == 18 && month - birth[1] == 0 && day -  birth[2] > 0){
		return true;
	}else{
		return false;
	}
}
console.log(com('1999-09-01'));
console.log(com('1999-08-22'));
console.log(com('1999-08-24'));
console.log(com('1999-08-23'));

发表于 2017-08-23 17:35:21 回复(0)
var date = prompt("日期:"); var dateArray; var year; var month; var day; var nowArray; var nowYear; var nowMonth; var nowDay; function isAdult() { if(nowYear-year > 18){ return true; }else if(nowYear-year < 18){ return false; }else{ if(nowMonth>month){ return true; }else if(nowMonth<month>=day){ return true; }else{ return false; } } } } if(date.length!=0) { dateArray = date.split("-"); year = dateArray[0]; month = dateArray[1]; day = dateArray[2]; nowArray = new Date().toLocaleDateString().split("/"); nowYear = nowArray[0]; nowMonth = nowArray[1]; nowDay = nowArray[2]; alert(isAdult()); } </month>
发表于 2017-08-23 14:16:28 回复(0)
yearsold : function ( dateStr ) {
    const toDay = new Date();
    const thisYear = toDay.getFullYear();
    const yearNum = parseInt(dateStr.substr(0, 4), 10);
    return thisYear - yearNum > ? true : false;
}


发表于 2017-08-22 15:23:28 回复(0)
<script type="text/javascript">
</script>

发表于 2017-08-20 18:36:43 回复(0)
注意月份要加一。
发表于 2017-08-20 11:31:41 回复(0)
 function isOld(date){
	var time = date.split('-');
	var nowTime = new Date();
	if(nowTime.getFullYear() - time[0] > 18){
		return true;
	}else if(nowTime.getFullYear() - time[0] < 18){
		return false;
	}
	if(nowTime.getMonth() + 1 > time[1]){
		return true;
	}else if(nowTime.getMonth() + 1 < time[1]){
		return false;
	}
	if(nowTime.getDate() >= time[2]){
		return true;
	}
	return false;
}
console.log(isOld('2000-01-05'));
console.log(isOld('1999-02-14'));
console.log(isOld('1999-02-13'));
console.log(isOld('1989-12-26'));
发表于 2017-08-19 18:58:13 回复(0)
function isOld_18(str){
    var time1=new Date(Date.parse(str));     
    var now=new Date();
    if(now.getFullYear()-time1.getFullYear()>18){
     return true;
    }else if(now.getFullYear()-time1.getFullYear()==18){
     if(now.getMonth()-time1.getMonth()>0){
      return true;
     }else if(now.getMonth()-time1.getMonth()==0){
      if(now.getDay()-time1.getDay()>=0){
       return true;
      }else{
       return false;
      }
     }else{
      return false;
     }
    }else{
     return false;
    }
}

编辑于 2017-08-19 18:06:52 回复(0)
补零操作是干嘛的呢?
发表于 2017-08-19 16:47:00 回复(0)