日期:2014-05-20  浏览次数:20888 次

求教 判断日期是否正确的最快方法
text中输入数字,前8位是时间,后四位是流水号。如:200701170001,我要判断前8位客户输入的是否正确。方法如下:
private       static       bool       IsDate(string       vDateStr)      
{   //vDateStr   的值是20070117为2007年1月17号。20070133肯定是错误的。
      bool       IsDate=true;      
      try      
                {   string   newDateStr=vDateStr.Substring(0,4)+ "/ "+vDateStr.Substring(4,2)+ "/ "+vDateStr.Substring(6,2);

DateTime   mDt=DateTime.Parse(newDateStr);      
}      
catch(FormatException)      
                  {      
      IsDate=false;      
}      
return       IsDate;      
}
但是第一次运行的时候DateTime.Parse运行需要一段时间,不知道有没有更快的检验方法。请赐教!!

------解决方案--------------------
正在表达式
((^((1[8-9]\d{2})|([2-9]\d{3}))(10|12|0[13578])(3[01]|[12][0-9]|0[1-9])$)|(^((1[8-9]\d{2})|([2-9]\d{3}))(11|0[469])(30|[12][0-9]|0[1-9])$)|(^((1[8-9]\d{2})|([2-9]\d{3}))(02)(2[0-8]|1[0-9]|0[1-9])$)|(^([2468][048]00)(02)(29)$)|(^([3579][26]00)(02)(29)$)|(^([1][89][0][48])(02)(29)$)|(^([2-9][0-9][0][48])(02)(29)$)|(^([1][89][2468][048])(02)(29)$)|(^([2-9][0-9][2468][048])(02)(29)$)|(^([1][89][13579][26])(02)(29)$)|(^([2-9][0-9][13579][26])(02)(29)$))