在做項目的時候遇見一個需求,要求知道會員卡種類,會員卡開始時間和會員卡使用有效週期自動得到會員卡到期時間。所以就出現了幾個難點。一、有效週期寫法不一定;二、如何獲取使用週期內的數字;三、如何自動得到會員卡到期時間。以下就來解決一下這些問題:
一、規定週期輸入格式:
var vperiod=$("#vperiod").val();
var pattern1=/^\d{1,2}個月/;
if(!(pattern1.test(vperiod)||vperiod==null)){
alert("會員卡使用週期輸入格式爲:xx個月");
return false;
}
二、如何獲取使用週期內的數字
var ubksj=$('#ubksj').val();
var vperiod=$("#vperiod").val();
var array = ubksj.split("-");
var dt = new Date(array[0], array[1], array[2]);
var times="";
//獲取字符串中的數字
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;
}
}
};