如何判断一个字符串是否是是时间格式,不用抓异常的方法。
DateTime的Parse不抛异常。

解决方案 »

  1.   

    convert.to..是可以抛得,如果你不想用try{convert.todatetime}catch{}
    那你就写正则吧,不过要符合所有格式的正则不好写,呵呵
      

  2.   

    我也遇到了这样的问题,时间格式的正则表达式不好写,我也没有找到,所有我就用的
    try{}catch{}语法。
      

  3.   

    试试这个:
    REGEXP_IS_VALID_DATE = @"^(?:(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00)))(\/|-|\.)(?:0?2\1(?:29))$)|(?:(?:1[6-9]|[2-9]\d)?\d{2})(\/|-|\.)(?:(?:(?:0?[13578]|1[02])\2(?:31))|(?:(?:0?[1,3-9]|1[0-2])\2(29|30))|(?:(?:0?[1-9])|(?:1[0-2]))\2(?:0?[1-9]|1\d|2[0-8]))$";
      

  4.   

    参考一下:
    private bool IsDate(string id)
    {
    try
    {
    string regextext = @"\d{4}(?:-\d{1,2}){0,2}";
    Regex regex = new Regex (regextext,RegexOptions.None );
    if(regex.IsMatch (id))
    {
    char sep = '-';
    if(id.IndexOf ("-") != -1)
    sep = '-';
    else if (id.IndexOf ("/") != -1)
    sep = '/';
    else if (id.IndexOf (".") != -1)
    sep = '.';
    char[] chr = new char []{sep};
    string[] arr = id.Split (chr);
    DateTime dt = new DateTime (Convert.ToInt32 (arr[0]),Convert.ToInt32 (arr[1]),Convert.ToInt32 (arr[2]));
    return arr.Length == 3 & Convert.ToInt32 (dt.Year) == Convert.ToInt32 (arr[0]) & Convert.ToInt32 (dt.Month) == Convert.ToInt32 (arr[1]) & Convert.ToInt32 (dt.Day) == Convert.ToInt32 (arr[2]);
    }
    }
    catch
    {
    return false;
    }
    return false;
    }
      

  5.   

    日期格式为:yyyy-mm-dd,yyyy/mm/dd,yyyy.mm.dd三种。
    可以根据自己需要增加。
      

  6.   

    private int pdlx(string tt)
    {
    try
    {
    Convert.ToDecimal(tt);
    return 1;//是
    }
    catch
    {

    return 0;//不是
    }
    }