日期:2014-05-16  浏览次数:20386 次

js正则比配复杂日期
日期:扫描 “今天,明天,后天,周X,下周X,Y月Y日,X月X日,X日,X号,XXXX年XX月XX日,XX.XX”等范式命中,将其转换为日期值作为日期。 
钟点:扫描“上午X点(XX分),上午Y点(YY分),下午X点(XX分),下午Y点(YY分),xx点,XX:XX ”等范式命中,将其转换为时间值作为钟点。 

求解~

------解决方案--------------------
希望大家提问题时,不要把问题的所问含义留给别人去猜,你这里的“周x"是什么?比如,今天是周日,那么”周日”指的是哪一天?
------解决方案--------------------
function getDay( date, increment ){//处理 今天,明天,后天的
date.setDate(date.getDate() + increment);
return date.getFullYear() + "-" + date.getMonth()+1 + "-" + date.getDate();
}

var date = new Date();
var today = date.getFullYear() + "-" + date.getMonth()+1 + "-" + date.getDate();
var temp = date;
temp.setDate(temp.getDate() -1);
var tomorrow = temp.getFullYear() + "-" + temp.getMonth()+1 + "-" + temp.getDate();//这个tomorrow会正确处理比如今天是3.31号,求tomorrow的情况
var test = /(今天)
------解决方案--------------------
(明天)
------解决方案--------------------
周([一二三四五六日])
------解决方案--------------------
([0-9]{1,2})月
------解决方案--------------------
([上
------解决方案--------------------
下])午([0-9])点\(([0-9]{1,2})分\)/g;
var result = test.exec("请你在今天之后的明天的周四的11月的下午2点(15分)来报道");
while(true){
console.log(result);
result = test.exec("请你在今天之后的明天的周四的11月的下午2点(15分)来报道");
if(!test.lastIndex){
break;
}
if(result[1]){//处理今天 result[1]==今天
}else if(result[2]){//result[2]==明天
}else if(result[3]){//result[3]==周几中的"一“或者"二"或者。。。
}else if(result[4]){//result[4] ==月份中的月数
}else if(result[5] && result[6] && result[7]){//分别等于 上或者下 几点 几分
}else{//其他默认处理
}
}