张文的博客

导航

时间格式验证

 

 #region//时间格式验证
    
public static bool IsDateTime(string strValue)
    {
        
if (null == strValue)
        {
            
return false;
        }

        
string regexDate = @"[1-2]{1}[0-9]{3}((-|\/){1}(([0]?[1-9]{1})|(1[0-2]{1}))((-|\/){1}((([0]?[1-9]{1})|([1-2]{1}[0-9]{1})|(3[0-1]{1})))( (([0-1]{1}[0-9]{1})|2[0-3]{1}):([0-5]{1}[0-9]{1}):([0-5]{1}[0-9]{1})(\.[0-9]{3})?)?)?)?$";

        
if (Regex.IsMatch(strValue, regexDate))
        {
            
//以下各月份日期验证,保证验证的完整性
            int _IndexY = -1;
            
int _IndexM = -1;
            
int _IndexD = -1;

            
if (-1 != (_IndexY = strValue.IndexOf("-")))
            {
                _IndexM 
= strValue.IndexOf("-", _IndexY + 1);
                _IndexD 
= strValue.IndexOf(":");
            }
            
else
            {
                _IndexY 
= strValue.IndexOf("/");
                _IndexM 
= strValue.IndexOf("/", _IndexY + 1);
                _IndexD 
= strValue.IndexOf(":");
            }

            
//不包含日期部分,直接返回true
            if (-1 == _IndexM)
                
return true;

            
if (-1 == _IndexD)
            {
                _IndexD 
= strValue.Length + 3;
            }

            
int iYear = Convert.ToInt32(strValue.Substring(0, _IndexY));
            
int iMonth = Convert.ToInt32(strValue.Substring(_IndexY + 1, _IndexM - _IndexY - 1));
            
int iDate = Convert.ToInt32(strValue.Substring(_IndexM + 1, _IndexD - _IndexM - 4));

            
//判断月份日期
            if ((iMonth < 8 && 1 == iMonth % 2|| (iMonth > 8 && 0 == iMonth % 2))
            {
                
if (iDate < 32)
                    
return true;
            }
            
else
            {
                
if (iMonth != 2)
                {
                    
if (iDate < 31)
                        
return true;
                }
                
else
                {
                    
//闰年
                    if ((0 == iYear % 400|| (0 == iYear % 4 && 0 < iYear % 100))
                    {
                        
if (iDate < 30)
                            
return true;
                    }
                    
else
                    {
                        
if (iDate < 29)
                            
return true;
                    }
                }
            }
        }

        
return false;
    }
    
#endregion

posted on 2009-02-26 17:12  张文的博客  阅读(562)  评论(0编辑  收藏  举报