求教 判断日期是否正确的最快方法
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)$))