JavaScript日期校验

 //由页面元素date_string(YYYY-MM_DD格式)得到数组date_array
 //输入参数:date_string:日期串;marker:日期串date_string里的分隔符,如果没有则为"";
 //返回值: 数组:date_array
 //            数组元素date_array.year=YYYY;date_array.month=MM;date_array.day=DD;date_array.datestring=YYYYMMDD
function date_get(date_string,marker)
{
    var date_array=new Array()
    if (date_string.length!=0)
    {
        if (marker!="")                            //如果传入的字符串有分隔符
        {
            var year = date_string.substr(0,4);
            var month = date_string.substr(5,2);
            var day = date_string.substr(8,2);
        }
        else                                    //如果传入的字符串没有分隔符
        {
            var year = date_string.substr(0,4);
            var month = date_string.substr(4,2);
            var day = date_string.substr(6,2);
        }
                   
        date_array.year=year;
        date_array.month=month;
        date_array.day=day;
        date_array.datestring=year+month+day+"";
        return date_array;
    }
   
    date_array.year="";
    date_array.month="";
    date_array.day="";
    date_array.datestring="";
   
    return date_array;   
}


//year必须大于1900;month必须在1-12之间;day必须在1-31之间
//输入参数:年、月、日、错误提示信息里要显示的控件标签名字
//返回值:数组:check_result
//          数组元素check_result.status:true/false    校验成功/失败;
//          数组元素check_result.message:""/错误提示信息    空串(校验成功的时候)/错误提示信息(校验失败的时候);
function date_check(date_array,field_name)
{
    var check_result = new Array();
   
    //获得数字。(页面中)
    var year = date_array.year;
    var month = date_array.month;
    var day = date_array.day;
    var hour = date_array.hour;
    var minute = date_array.minute;
    var second = date_array.second;
   
    //年份必须为YYYY(用正则表达式判断是否是数字)
    var err_message='日期必须符合YYYY-MM-DD格式,年份必须由YYYY格式的四位数字组成!';
    //var year_patten=/^[0-9]{4,4}$/i;
    var year_patten=/^/d+$/i;
    var matchArray = year.match(year_patten);   
    if (year.length!=0 && matchArray==null)
    {
        check_result.status=false;
        check_result.message=err_message;
        return check_result;    
    }   
   
    //月必须为MM(用正则表达式判断是否是数字)
    var err_message='日期必须符合YYYY-MM-DD格式,月份必须由MM格式的二位数字组成!';
    //var month_patten=/^[0-9]{2,2}$/i;
    var month_patten=/^/d+$/i;
    var matchArray = month.match(month_patten);
    if (month.length!=0 && matchArray==null)
    {
        check_result.status=false;
        check_result.message=err_message;
        return check_result;
    }
    //日期必须为DD(用正则表达式判断是否是数字)
    var err_message='日期必须符合YYYY-MM-DD格式,日期必须由DD格式的二位数字组成!';
    //var day_patten=/^[0-9]{2,2}$/i;
    var day_patten=/^/d+$/i;
    var matchArray = day.match(day_patten);   
    if (day.length!=0 && matchArray==null)
    {   
        check_result.status=false;
        check_result.message=err_message;
        return check_result;    
    }
   
    /*alert("ok");
    alert(hour);
   
    //日期必须为DD(用正则表达式判断是否是数字)
    var err_message='日期必须符合YYYY-MM-DD格式,小时必须由hh格式的二位数字组成!';
    var hour_patten=/^[0-9]{2,2}$/i;
    //var hour_patten=/^/d+$/i;
    var matchArray = hour.match(hour_patten);   
    if (hour.length!=0 && matchArray==null)
    {   
        check_result.status=false;
        check_result.message=err_message;
        return check_result;    
    }
   
    //日期必须为DD(用正则表达式判断是否是数字)
    var err_message='日期必须符合YYYY-MM-DD格式,分钟必须由mm格式的二位数字组成!';
    var minute_patten=/^[0-9]{2,2}$/i;
    //var minute_patten=/^/d+$/i;
    var matchArray = minute.match(minute_patten);   
    if (minute.length!=0 && matchArray==null)
    {   
        check_result.status=false;
        check_result.message=err_message;
        return check_result;    
    }
   
    //日期必须为DD(用正则表达式判断是否是数字)
    var err_message='日期必须符合YYYY-MM-DD格式,日期必须由ss格式的二位数字组成!';
    var second_patten=/^[0-9]{2,2}$/i;
    //var second_patten=/^/d+$/i;
    var matchArray = second.match(second_patten);   
    if (second.length!=0 && matchArray==null)
    {
        check_result.status=false;
        check_result.message=err_message;
        return check_result;    
    }
    */
   
    var year_int=parseInt(year,10);
    var month_int;
    var day_int;

    if(month.substr(0,1) == "0")
        month_int = parseInt(month.substr(1,1));
    else
        month_int = parseInt(month);
   
    if(day.substr(0,1) == "0")
        day_int = parseInt(day.substr(1,1));
    else
        day_int = parseInt(day);

    if ((year_int%4==0)&&(year_int%100!=0) || (year_int%400==0))
    {
        var day_number=new Array(31,29,31,30,31,30,31,31,30,31,30,31);
    }
    else
    {
        var day_number=new Array(31,28,31,30,31,30,31,31,30,31,30,31);
    }
    if (year_int<1900)
    {
        var err_message = field_name+"的年没有意义!请重新输入!";
               
        check_result.status=false;
        check_result.message=err_message;
        return check_result;
    }   
    if (month_int<1 || month_int>12)    
    {
        var err_message = field_name+"的月份不正确!请确认符合'YYYY-MM-DD'格式!";
       
        check_result.status=false;
        check_result.message=err_message;
        return check_result;
    }
    if (day_int<1 || day_int>day_number[(month-1)])   
    {
        var err_message = field_name+"的日期部分不正确!请确认符合'YYYY-MM-DD'格式!";
       
        check_result.status=false;
        check_result.message=err_message;
        return check_result;
    }
    if (hour<0 || hour>24)   
    {
        var err_message = field_name+"的小时部分不正确!请确认符合'YYYY-MM-DD'格式!";
       
        check_result.status=false;
        check_result.message=err_message;
        return check_result;
    }
    if (minute<0 || minute>60)   
    {
        var err_message = field_name+"的分钟部分不正确!请确认符合'YYYY-MM-DD'格式!";
       
        check_result.status=false;
        check_result.message=err_message;
        return check_result;
    }
    if (second<0 || second>60)   
    {
        var err_message = field_name+"的秒钟部分不正确!请确认符合'YYYY-MM-DD'格式!";
       
        check_result.status=false;
        check_result.message=err_message;
        return check_result;
    }
   
    check_result.status=true;
    check_result.message="";
    return check_result;
}

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/taojiahuanjia/archive/2008/08/22/2814696.aspx

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值