yyyy-MM-dd HH:mm:ss
yyyy-MM-dd HH:mm
yyyy-MM-dd
HH:mm:ss
HH:mm输入字符串的格式有可能是上面格式的其中一种,C#如何做判断呢?

解决方案 »

  1.   


    1.#region 判断日期   
    2.  
    3./// <summary>   
    4./// 判断日期的日期部分格式   
    5./// </summary>   
    6./// <param name="dateStr">输入的日期的日期部分字符串</param>   
    7./// <returns>bool</returns>   
    8.public bool isDateTime(string dateStr)   
    9.{   
    10.    bool _isDate = false;   
    11.  
    12.    string matchStr = "";   
    13.  
    14.    matchStr += @"^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-))$ ";   
    15.  
    16.    RegexOptions option = (RegexOptions.IgnoreCase | (RegexOptions.Multiline | RegexOptions.IgnorePatternWhitespace));   
    17.  
    18.    if (Regex.IsMatch(dateStr, matchStr, option))   
    19.        _isDate = true;   
    20.    else  
    21.        _isDate = false;   
    22.  
    23.    return _isDate;   
    24.  
    25.}   
    26.  
    27./// <summary>   
    28./// 判断日期的时间部分格式   
    29./// </summary>   
    30./// <param name="time_str">输入日期的时间部分字符串</param>   
    31./// <returns>bool</returns>   
    32.public bool isDateTime_time(string time_str)   
    33.{    
    34.    bool _isDate = false;   
    35.  
    36.    string matchStr = "";   
    37.  
    38.    //matchStr += @"^(\s(((0?[0-9])|([1-2][0-3]))\:([0-5]?[0-9])((\s)|(\:([0-5]?[0-9])))))?$ ";   
    39.  
    40.    //matchStr += @"(20|21|22|23|[0-1]?\d):[0-5]?\d:[0-5]?\d$";   
    41.  
    42.    //matchStr += @"(0*[0-9]|[1-2][0-3]):(0*[0-9]|[1-5][0-9]):(0[0-9]|[1-5][0-9])";   
    43.  
    44.    matchStr += @"^([01]\d|2[0-3]):([0-5]\d):([0-5]\d)$";   
    45.  
    46.    RegexOptions option = (RegexOptions.IgnoreCase | (RegexOptions.Multiline | RegexOptions.IgnorePatternWhitespace));   
    47.  
    48.    if (Regex.IsMatch(time_str, matchStr, option))   
    49.        _isDate = true;   
    50.    else  
    51.        _isDate = false;   
    52.  
    53.    return _isDate;   
    54.}   
    55.  
    56./// <summary>   
    57./// 判断日期的全部格式   
    58./// </summary>   
    59./// <param name="dateStr">输入日期的字符串</param>   
    60./// <returns></returns>   
    61.public bool isDate(string dateStr)   
    62.{    
    63.    bool _isDate = false;   
    64.  
    65.    string matchStr = "";   
    66.  
    67.    matchStr += @"^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-)) ";   
    68.    matchStr += @"(\s(((0?[0-9])|([1-2][0-3]))\:([0-5]?[0-9])((\s)|(\:([0-5]?[0-9])))))?$ ";   
    69.  
    70.    RegexOptions option = (RegexOptions.IgnoreCase | (RegexOptions.Multiline | RegexOptions.IgnorePatternWhitespace));   
    71.  
    72.    if (Regex.IsMatch(dateStr, matchStr, option))   
    73.        _isDate = true;   
    74.    else  
    75.        _isDate = false;   
    76.  
    77.    return _isDate;   
    78.}  
    79. 
    80.#endregion 判断日期  
      

  2.   


    #region 判断日期/// <summary>
    /// 判断日期的日期部分格式
    /// </summary>
    /// <param name="dateStr">输入的日期的日期部分字符串</param>
    /// <returns>bool</returns>
    public bool isDateTime(string dateStr)
    {
        bool _isDate = false;    string matchStr = "";    matchStr += @"^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-))$ ";    RegexOptions option = (RegexOptions.IgnoreCase | (RegexOptions.Multiline | RegexOptions.IgnorePatternWhitespace));    if (Regex.IsMatch(dateStr, matchStr, option))
            _isDate = true;
        else
            _isDate = false;    return _isDate;}/// <summary>
    /// 判断日期的时间部分格式
    /// </summary>
    /// <param name="time_str">输入日期的时间部分字符串</param>
    /// <returns>bool</returns>
    public bool isDateTime_time(string time_str)

        bool _isDate = false;    string matchStr = "";    //matchStr += @"^(\s(((0?[0-9])|([1-2][0-3]))\:([0-5]?[0-9])((\s)|(\:([0-5]?[0-9])))))?$ ";    //matchStr += @"(20|21|22|23|[0-1]?\d):[0-5]?\d:[0-5]?\d$";    //matchStr += @"(0*[0-9]|[1-2][0-3]):(0*[0-9]|[1-5][0-9]):(0[0-9]|[1-5][0-9])";    matchStr += @"^([01]\d|2[0-3]):([0-5]\d):([0-5]\d)$";    RegexOptions option = (RegexOptions.IgnoreCase | (RegexOptions.Multiline | RegexOptions.IgnorePatternWhitespace));    if (Regex.IsMatch(time_str, matchStr, option))
            _isDate = true;
        else
            _isDate = false;    return _isDate;
    }/// <summary>
    /// 判断日期的全部格式
    /// </summary>
    /// <param name="dateStr">输入日期的字符串</param>
    /// <returns></returns>
    public bool isDate(string dateStr)

        bool _isDate = false;    string matchStr = "";    matchStr += @"^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-)) ";
        matchStr += @"(\s(((0?[0-9])|([1-2][0-3]))\:([0-5]?[0-9])((\s)|(\:([0-5]?[0-9])))))?$ ";    RegexOptions option = (RegexOptions.IgnoreCase | (RegexOptions.Multiline | RegexOptions.IgnorePatternWhitespace));    if (Regex.IsMatch(dateStr, matchStr, option))
            _isDate = true;
        else
            _isDate = false;    return _isDate;
    }#endregion 判断日期
      

  3.   

    我贴一个我刚才测试通过的:#region 判断日期        /// <summary>
            /// 判断日期的全部格式(yyyy-MM-dd HH:mm:ss) 
            /// </summary>
            /// <param name="dateStr">输入日期的字符串</param>
            /// <returns></returns>
            public bool isDateTimeLong(string dateStr)
            {
                return Regex.IsMatch(dateStr, @"^(((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-)) (20|21|22|23|[0-1]?\d):[0-5]?\d:[0-5]?\d)$");        }        /// <summary>
            /// 判断日期的全部格式(不带秒)(yyyy-MM-dd HH:mm)
            /// </summary>
            /// <param name="dateStr">输入日期的字符串</param>
            /// <returns></returns>
            public bool isDateTimeShort(string dateStr)
            {
                return Regex.IsMatch(dateStr, @"^(((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-)) (20|21|22|23|[0-1]?\d):[0-5]?\d)$");
            }        /// <summary>
            /// 判断日期的日期部分格式(yyyy-MM-dd)
            /// </summary>
            /// <param name="dateStr">输入的日期的日期部分字符串</param>
            /// <returns>bool</returns>
            public bool isDateShort(string dateStr)
            {
                return Regex.IsMatch(dateStr, @"^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-9]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-))$");        }        /// <summary>
            /// 判断日期的时间部分格式,带秒(HH:mm:ss)  
            /// </summary>
            /// <param name="dateStr">输入日期的时间部分字符串</param>
            /// <returns>bool</returns>
            public bool isTimeLong(string dateStr)
            {
                return Regex.IsMatch(dateStr, @"^((20|21|22|23|[0-1]?\d):[0-5]?\d:[0-5]?\d)$");
            }        /// <summary>
            /// 判断日期的时间部分格式,没有秒(HH:mm) 
            /// </summary>
            /// <param name="dateStr">输入日期的时间部分字符串</param>
            /// <returns>bool</returns>
            public bool isTimeShort(string dateStr)
            {
                return Regex.IsMatch(dateStr, @"^((20|21|22|23|[0-1]?\d):[0-5]?\d)$");
            }                #endregion 判断日期