1:c# 怎么样确定一个字符串是否能转换成日期?2:C# 怎么样确定一个字符串是否能转换成日期?且在指定范围的日期?3:比如看到2010/1/2,程序如何辨别知道是1月2号,而不是2月1号。

解决方案 »

  1.   

    1,try...catch
    2.转换之后判断一下
    3.日期有一定的格式的。
      

  2.   

    补充:1:c# 怎么样确定一个字符串是否能转换成日期?       最好用一个bool函数来返回结果,而不能用try catch
      

  3.   

    用正则就行了/// <summary>
            /// 判断字符串是否是时间格式字符串
            /// </summary>
            /// <param name="str">待判断字符串</param>
            /// <returns>判断结果</returns>
            public static bool IsDateString(string str)
            {
                return Regex.IsMatch(str, @"^((\d{2}(([02468][048])|([13579][26]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|([1-2][0-9])))))|(\d{2}(([02468][1235679])|([13579][01345789]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))(\s(((0?[0-9])|(1[0-9])|(2[0-3]))\:(([0-5][0-9])|([0-9]))(((\s)|(\:(([0-5][0-9])|([0-9]))))?)))?$");
            }
      

  4.   

    2010/1/2这种格式的就换下符号就行了, 把/换成-如果是时间格式就 convert.todatatime
    如果不是时间格式就给个默认值