C#验证给定字符串形式日期是否合法的方法
本文实例讲述了C#验证给定字符串形式日期是否合法的方法。分享给大家供大家参考。具体分析如下:
这段C#代码用于验证日期的有效性,对于用户输入的不规则日期也作了简单处理,比如用户输入了“今天”,则代码会认为用户要返回的是今天的日期,另外可以对纯数字的日期进行解析,比如:20130906
///<summary> ///验证日期是否合法,对不规则的作了简单处理 ///</summary> ///<paramname="date">日期</param> publicstaticboolIsDate(refstringdate) { //如果为空,认为验证合格 if(IsNullOrEmpty(date)) { returntrue; } //清除要验证字符串中的空格 date=date.Trim(); //替换\ date=date.Replace(@"\","-"); //替换/ date=date.Replace(@"/","-"); //如果查找到汉字"今",则认为是当前日期 if(date.IndexOf("今")!=-1) { date=DateTime.Now.ToString(); } try { //用转换测试是否为规则的日期字符 date=Convert.ToDateTime(date).ToString("d"); returntrue; } catch { //如果日期字符串中存在非数字,则返回false if(!IsInt(date)) { returnfalse; } #region对纯数字进行解析 //对8位纯数字进行解析 if(date.Length==8) { //获取年月日 stringyear=date.Substring(0,4); stringmonth=date.Substring(4,2); stringday=date.Substring(6,2); //验证合法性 if(Convert.ToInt32(year)<1900||Convert.ToInt32(year)>2100) { returnfalse; } if(Convert.ToInt32(month)>12||Convert.ToInt32(day)>31) { returnfalse; } //拼接日期 date=Convert.ToDateTime(year+"-"+month+"-"+day).ToString("d"); returntrue; } //对6位纯数字进行解析 if(date.Length==6) { //获取年月 stringyear=date.Substring(0,4); stringmonth=date.Substring(4,2); //验证合法性 if(Convert.ToInt32(year)<1900||Convert.ToInt32(year)>2100) { returnfalse; } if(Convert.ToInt32(month)>12) { returnfalse; } //拼接日期 date=Convert.ToDateTime(year+"-"+month).ToString("d"); returntrue; } //对5位纯数字进行解析 if(date.Length==5) { //获取年月 stringyear=date.Substring(0,4); stringmonth=date.Substring(4,1); //验证合法性 if(Convert.ToInt32(year)<1900||Convert.ToInt32(year)>2100) { returnfalse; } //拼接日期 date=year+"-"+month; returntrue; } //对4位纯数字进行解析 if(date.Length==4) { //获取年 stringyear=date.Substring(0,4); //验证合法性 if(Convert.ToInt32(year)<1900||Convert.ToInt32(year)>2100) { returnfalse; } //拼接日期 date=Convert.ToDateTime(year).ToString("d"); returntrue; } #endregion returnfalse; } }
希望本文所述对大家的C#程序设计有所帮助。