JavaScript日期校正

來源:互聯網
上載者:User

 //由頁面元素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(用Regex判斷是否是數字)
    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(用Regex判斷是否是數字)
    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(用Regex判斷是否是數字)
    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(用Regex判斷是否是數字)
    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(用Regex判斷是否是數字)
    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(用Regex判斷是否是數字)
    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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.