判断用户输入是否为日期 - IsDateTime
2017-05-03 21:30:49 访问(1509) 赞(0) 踩(0)
/// <summary>
/// 判断用户输入是否为日期 - IsDateTime
/// </summary>
/// <param name="strValue"></param>
/// <returns></returns>
/// <remarks>
/// 可判断格式如下(其中-可替换为/,不影响验证)
/// YYYY | YYYY-MM | YYYY-MM-DD | YYYY-MM-DD HH:MM:SS | YYYY-MM-DD HH:MM:SS.FFF
/// </remarks>
public static bool IsDateTime(string strValue)
{
if (strValue == null || strValue.Length == 0)
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;
}
标签:
判断用户输入是否为日期 - IsDateTime 


上一条:
下一条:
相关评论
发表评论