獲取字串中數字,並計算指定時間的後幾個月是幾月幾號

she_smiled發表於2017-10-27

在做專案的時候遇見一個需求,要求知道會員卡種類,會員卡開始時間和會員卡使用有效週期自動得到會員卡到期時間。所以就出現了幾個難點。一、有效週期寫法不一定;二、如何獲取使用週期內的數字;三、如何自動得到會員卡到期時間。以下就來解決一下這些問題:

一、規定週期輸入格式:

    var vperiod=$("#vperiod").val();
    var pattern1=/^\d{1,2}個月/;
    if(!(pattern1.test(vperiod)||vperiod==null)){
        alert("會員卡使用週期輸入格式為:xx個月");
        return false;
    }

二、如何獲取使用週期內的數字

function getudqsj(){
    var ubksj=$('#ubksj').val();
    var vperiod=$("#vperiod").val();
    var array = ubksj.split("-");
    var dt = new Date(array[0], array[1], array[2]);

    var times="";

   //獲取字串中的數字

    for(var i=0;i<vperiod.length;i++){  
        if("0123456789".indexOf(vperiod.substr(i,1))>-1)  
            times+=vperiod.substr(i,1)  
    }
    var monthOrDay=vperiod.indexOf("個月");
    if(-1!=monthOrDay){
        var udqsj=DateAdd( "m",parseInt(times),dt);
         $('#udqsj').val(udqsj);
    }


三、自動獲取到期時間 

/*計算時間  */
function   DateAdd(interval,number,date) {
   switch(interval){   
      case   "m"   :   {  
        if(date.getMonth()+number>12){
            date.setMonth(date.getMonth()+number-12);
            date.setFullYear(date.getFullYear()+1)
        }
        else{
            date.setMonth(date.getMonth()+number);
            }
            var year = date.getFullYear(); //得到年份
            var month = date.getMonth();//得到月份
            if(month==0) {month=12;}
            var d= date.getDate();//得到日期
            if (month < 10) month = "0" + month;
            if (d< 10) d= "0" + d;
            var time = "";
            time = year + "-" + month + "-" + d;
        return   time;  
        break;  
      }
    }  
};

相關文章