출처 : http://danwhasoft.tistory.com/167



function isDateTime(str){
    // yyyy-MM-dd HH:mm
    // 형식만 체크됨
    
    var re = /^(\d\d\d\d)-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01]) (00|0[0-9]|1[0-9]|2[0-3]):(0[0-9]|[0-5][0-9])$/gm;
    var _array = re.exec(str);
    
    if(_array == null)
        return false;
    
    if(isDate(_array[1] + _array[2] + _array[3]) != 0)
        return false;
    
    return true;
}
function isDate(yyyymmdd) {
    // input
    // yyyymmdd, yyyy-mm-dd, yyyy/mm/dd
    // output
    // 0: 정상, 1: 해당월의 날짜 넘음, 2: 존재하지 않는 달, 3: 포맷 안맞음, 4: -인 날짜(?)
    var ymd;
    if (yyyymmdd.length == 8) {
        if (!yyyymmdd.match(/[0-9]{8}/g))
            return 3;

        y = yyyymmdd.substring(04);
        m = yyyymmdd.substring(46);
        d = yyyymmdd.substring(68);
    } else if (yyyymmdd.length == 10) {
        if (!yyyymmdd.match(/[0-9]{4}[-/][0-9]{2}[-/][0-9]{2}/g))
            return 3;

        y = yyyymmdd.split('-')[0];
        m = yyyymmdd.split('-')[1];
        d = yyyymmdd.split('-')[2];
    } else {
        return 3;
    }

    var limit_day;
    switch (eval(m)) {
    case 1:
    case 3:
    case 5:
    case 7:
    case 8:
    case 10:
    case 12:
        limit_day = 31;
        break;
    case 2:
        if ((y - 2008) % 4 == 0)
            limit_day = 29;
        else
            limit_day = 28;
        break;
    case 4:
    case 6:
    case 9:
    case 11:
        limit_day = 30;
        break;
    default:
        return 2;
        break;
    }
    if (eval(d) > limit_day) {
        return 1;
    }
    if (eval(d) < 1) {
        return 4;
    }
    return 0;
}




Posted by motolies
,