none
C# 怎么判断一个字符串是不是合法日期 RRS feed

  • 问题

  • RT。
    DateTime.Parse(str)
    试过了,需要捕捉异常才能判断是否为DateTime,不可采用。
    别的办法呢?

    2009年12月15日 10:51

答案

  • 你好!
         一般可以这样:
        
    DateTime dateValue;
       if (DateTime.TryParse(dateString, out dateValue)) 
          Console.WriteLine("转换成功");
       else
          Console.WriteLine("转换失败");
    

    周雪峰
    • 已标记为答案 scoket.joe 2009年12月16日 1:31
    2009年12月15日 15:49
    版主

全部回复

  • 利用正则表示式判断



    using System.Text.RegularExpressions;

    string regDate =@"^((((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-))$";

    Regex reg = new Regex(regDate);

    reg.IsMatch("日期")
    努力+方法=成功
    2009年12月15日 11:08
  • 请使用TryParse方法,

    【孟子E章】
    2009年12月15日 11:52
    版主
  • 你好!
         一般可以这样:
        
    DateTime dateValue;
       if (DateTime.TryParse(dateString, out dateValue)) 
          Console.WriteLine("转换成功");
       else
          Console.WriteLine("转换失败");
    

    周雪峰
    • 已标记为答案 scoket.joe 2009年12月16日 1:31
    2009年12月15日 15:49
    版主
  • Thank you
    2009年12月16日 1:32
  • Not at all!
    周雪峰
    2009年12月16日 2:22
    版主